text:
Not much movement in this week's power rankings. The schedule has been limited by final exams. Illinois was the big winner, moving up two spots after winning at Gonzaga, a loss that cost the Bulldogs four spots. We welcome a Pittsburgh team that can no longer be ignored. And we say goodbye to UNLV, even though the Runnin' Rebels have continued to win. Too many close games for UNLV and now Mike Moser is sidelined with a dislocated elbow.
1. Indiana -– Guard Matt Hunter put up 40 points against the Hoosiers, but Central Connecticut State still lost 100-69 in Bloomington. The Hoosiers are loaded with offensive weapons. Indiana lost sophomore Austin Etherington with a fractured kneecap, but Hanner Mosquera-Perea and Peter Jurkin will be coming off nine-game NCAA suspensions Saturday.
2. Duke -- After Duke took care of business against Temple, coach Mike Krzyzewski said Marshall Plumlee might be read to make his debut when the Blue Devils play Cornell on Dec. 19. If Duke has a weakness, it is rebounding -- especially on the offensive end. Plumlee brother No. 3 could really help in that department.
3. Syracuse -- The march toward career victory No. 900 continues for coach Jim Boeheim. It is a remarkable accomplishment and should happen on Dec. 17 against Detroit. But don't overlook this Orange team and how good it is becoming. By the end of the season, Boeheim could have a great shot at a second national championship.
4. Louisville -- Coach Rick Pitino is so happy, he's even answering reporters' cell phones during postgame press conferences. And he is handing out nicknames, calling Russ Smith "Russ-diculous" for his streaky play and quirky personality. But when he scores 31 points, as he did against UMKC, Smith is simply sensational.
|Sign up now to join the Michigan community. Free 7-day trial!
5. Michigan -- The Wolverines are 10-0, their best start since 1988-89 when they won the national title. And Trey Burke is building a strong case for national player of the year honors.
6. Florida -- The Gators chomped down in Tallahassee and came away with a 72-47 victory, giving Florida seven wins in seven games this season. The first big test comes on Dec. 15 when the Gators play Arizona at the McKale Center.
7. Ohio State -- Coach Thad Matta was looking for scorers other than Deshaun Thomas against Long Beach State. LaQuinton Ross, Lenzelle Smith, Jr., and Sam Thompson all responded in an 89-55 win. Matta has three more games to experiment before a Dec. 22 showdown with Kansas.
8. Kansas -- The Jayhawks put on a dazzling display of team basketball during an easier-than-expected victory over Colorado at Allen Fieldhouse. Freshman Ben McLemore leads KU in scoring and defense gets the Jayhawks going in transition.
Sign up now to join the Arizona community.
Free 7-day trial!
9. Arizona -- Sean Miller's teams answered some questions by rallying to defeat Clemson on the road. The big one is still coming as Florida pays a visit to the McHale Center.
10. Cincinnati -- The Bearcats are averaging 84.2 points per game. That's fourth best in the nation. They are destroying opponents on the boards and they share the ball. Looking forward to those back-to-back games against New Mexico (Dec. 27) and Pittsburgh (Dec. 31).
11. Illinois -- The Illini just keep winning. There was no letdown after that big win at Gonzaga on Saturday. Illinois backed that up with a 64-54 win over Norfolk State on Tuesday. Brandon Paul had 14 points, eight rebounds, one assist, three steals and a block.
12. Missouri -- The Tigers are doing well in the Ohio Valley Conference, with consecutive victories over Southeast Missouri State and Tennessee State. Laurence Bowers had 18 points and 10 rebounds and Alex Oriakhi had 15 and 10 in the win over Tennessee State.
13. Minnesota -- Coach Tubby Smith picked up his 500th career victory Saturday. Tuesday night the Gophers defeated North Dakota State as Trevor Mbakwe grabbed 18 rebounds and Rodney Williams scored 19 points.
14. Gonzaga -- It's rare to see the Bulldogs hit a spell of cold shooting at home, but Gonzaga hit only 38 percent against Illinois after halftime. It was an important game for both sides and the Illini came away with the impressive win. Gonzaga drops in our poll, but the Bulldogs are still very much in the national picture.
15. Creighton -- Doug McDermott is averaging 22.7 points, shooting 55 percent from the field and 52 percent from three-point range. The Bluejays have intriguing tests coming up at Cal and against Tulsa, both before Christmas.
16. Georgetown -- The Hoyas are averaging 65.2 points and that ranks 220th in Division-I. Yet, Georgetown takes an 8-1 record into Saturday's game against Western Carolina. The Hoyas find a way to win.
17. San Diego State -- Jamaal Franklin, a junior guard, is a one-man wrecking crew for the Aztecs. He leads San Diego State in scoring, rebounding and assists. San Diego is next up for the Aztecs.
Sign up now to join the Notre Dame community.
Free 7-day trial!
18. Notre Dame -- Coach Mike Brey isn't a dummy. He used Notre Dame's 84-57 victory over Brown to use some new player combinations and give some of his reserves experience. That's a move that will pay off down the road. Seven players got 16 or more minutes during the win.
19. New Mexico -- Steve Alford's squad forced 22 turnovers in a victory over Valparaiso. The Lobos are perfect so far, including that nice win over Connecticut.
20. Michigan State -- The Spartans needed a 22-9 run at the start of the second half to hold off Loyola of Chicago. The final score was 73-61 after Loyola closed to within three. "We didn't play great. We didn't play bad," Spartans coach Tom Izzo said. Um, OK.
21. North Carolina State -- The Wolfpack is pulling it together and looking better. Richard Howell followed up on his UConn performance with 17 and 10 in a win over Cleveland State. C.J. Leslie is looking steady and freshman T.J. Warren is contributing.
Sign up now to join the Oklahoma State community.
Free 7-day trial!
22. Oklahoma State -- What are you doing New Year's Eve? The Cowboys will be playing Gonzaga. If you need a ticket, just get in touch with T. Boone Pickens. He bought the last 4,000.
23. Wichita State -- The Shockers put their 9-0 record on the line Thursday against Tennessee, on the road at Thompson-Boling Arena. The Vols are 4-3, but a game like that will still provide a good gauge for Wichita State.
24. Pittsburgh -- Back in October, at Big East media in New York, I picked the Panthers as my sleeper team in the conference. There's nothing sleepy about Jamie Dixon's team. The Panthers are efficient offensively, take care of the ball and shoot the ball extremely well.
25. North Carolina -- Roy Williams and the Tar Heels have a home date against East Carolina Saturday. They follow that up with a trip to Texas to play Rick Barnes' struggling team.


text:
Marcos Garcia took his alter-ego Chico Mann not from the 1970s TV series Chico and the Man, but from a bit of dialogue in the early-'80s hip-hop film Wild Style. For years, Garcia was best known as one of the members of the New York afrobeat ensemble Antibalas. But one day, he began tinkering with his daughter's Casio keyboard, and since then he's only built on his arsenal of electronic playthings.
Though Chico Mann's songs are obviously built for today's dance floors, his influences are clearly vintage. On his latest album, Magical Thinking, he's leapt back to the early 1980s style known as boogie. This is not the boogie of the rock 'n' roll pneumonia and boogie-woogie flu days; it's a retroactively named genre that arose from the ashes of post-disco and funk music. Boogie is known for its big bubblegum bass lines and sticky stacks of synthesizers and Chico Mann digs deep into both here.
While boogie's bounce is front and center on Magical Thinking, Chico Mann still preserves a connection to Garcia's other musical loves, including the distinctive, twitchy rhythms of Nigerian afrobeat and the rapid pulse of Dominican merengue.
For an album that so broadly draws on styles across time and place, Magical Thinkingcould be right at home in practically any sweaty basement club around the world. There's a sense of sonic frolic, as if Mann was rapidly throwing ideas at the studio wall, with most of them sticking. That playfulness seems fitting for an artist who began with a toy store keyboard. Three albums later, he sounds like he's having just as much fun, banging away amid plastic keys, blinking lights and burbling beats.

subset: commoncrawl


text:
If you enjoy hearing stories as well as reading them, you should listen to Crafted, a show that interviews independent artists , designers, and makers on their careers and the creative process.
Looking to advertise? We have highly competitive ad units and sponsorship rates.
If you've got something to say, we'd love to hear from you. Drop us a line at firstname.lastname@example.com
Copyright © 2011-2014 bePortland LLC -- All Rights Reserved -- bePortland is a trademark of bePortland LLC


text:
He's arrived! Cyclist Mark Beaumont reaches tip of the Americas after 268 days
Endurance rider thanks online community for support
Record-breaking distance cyclist Mark Beaumont has just reached the end of his trip down the Americas, arriving in Ushuaia, Tierra del Fuego, after 268 days on the road.
The 27-year-old Scot started in Anchorage, Alaska, pedalling 13,080 miles through 12 countries. In between, he found the time to reach the summit of the highest peaks in North and South America, Mount McKinley and Aconcagua, AND his video camera became his best mate!
At around 3pm UK time, Mark Tweeted that he'd finally reached the finishing line.
"I'm ecstatic to be here, it has been my dream and focus for so long," he wrote on his blog, "but also a small part of me is sad that the simple but tough life of bike and camera has come to an end, again, at least for now!
"Most of all I am looking forward to seeing friends and family who I haven't seen since last May and getting to see the documentary which I have been filming all along!"
"This journey has been so different than cycling around the world. I have gone at a pace which has allowed me to experience the world I was passing, and the scale of the online blogging has transformed the whole experience for me.
"I would like to thank everyone who has been following and especially those who have commented and contributed regularly. It's a very unique journey that we have completed together, not only in the sense of the expedition, but because of the online community which has built up to be a part of the almost real time documentary - this is the future!"
Mark's journey has been followed online and on BBC television and radio, where he has shared video diaries and interviews.
Great job!
In every sense
posted by Roadkill [43 posts]
18th February 2010 - 16:39
oooooh, that Julian whassisface round the world guy is gonna be fuming
perhaps he'll do it in 265 days and write a nasty blog or something
posted by cactuscat [303 posts]
18th February 2010 - 16:41
So he's done a 50 mile a day touring holiday, with a bit of climbing thrown in. So what? Who wouldn't want to do the same - if they could find someone to pay them for it?
posted by nick h. [30 posts]
19th February 2010 - 22:47


text:
Find commute times to your work, school, gym and more.
- This property is no longer listed on Rent.com. For this reason please note that any pricing or description information may not be up-to-date.
Autumn Ridge
Search Available Apartments
Property Features
- Parking
- Covered Parking
- Convenience
- Extra Storage
- High Speed Internet Access
- On Site Maintenance
- On Site Management
- Leisure
- Clubhouse
- Fitness Center
- Hot Tub
- Playground
- Swimming Pool
- Laundry
- Laundry Facility
- Washer & Dryer In Unit
- Other
- 4 Relaxing pools
- Accepts Electronic Payments
- Beautiful clubhouse
- Cozy Fireplace
- Emergency Maintenance
- Extra storage
- Frost-free refrigerator
- Huge floorplans
- Indoor spa
- Outdoor track
- Pet Park
- Pets Welcome
- Public Transportation
- Soccer Field
- State-of-the-art fitness center
- Trail, Bike, Hike, Jog
- Volleyball/basketball court
- Washer/dryer in apartment
Units may feature
- Amenities
- Air Conditioning
- Cable Ready
- Ceiling Fan(s)
- Disability Access
- Fireplace
- Garbage Disposal
- Oversized Closets
- Kitchen
- Dishwasher
- Microwave
- Refrigerator
- Outdoor
- Balcony
- View
Property Details
Upgraded appliances...Washer and dryers available...Hardwood flooring...
Choose from five amazing floor plans designed to fit your lifestyle! At Autumn Ridge our one, two, and three bedroom apartment homes are more than spacious. Select floor plans include upgraded appliances, ceiling fans, a full-size washer and dryer, and a cozy fireplace. Surround yourself with recreational opportunities while relaxing in luxury. Our four pools and fitness center are perfect ways to spend your free time without ever leaving home. Our New basketball courts and volleyball court are newly renovated and we now offer a soccer and multipurpose field, walking and jogging path, and Rover Ridge Dog Park. Enjoy our brand new playground!So whether you are looking to hang out by the pool after work, shoot some hoops or hit the gym? We have it all for you at Autumn Ridge. Welcome home to your own private resort!
Leasing Information
Pet Policy
Pets Accepted. Cats Allowed. Dogs Allowed. Call for service animal policy.
Lease terms 13-18 months. Pet Policy: 50 lb. weight limit. 2 pets max. $35 per pet rent. No aggressive breeds. $150 refundable pet deposit. $150 non-refundable pet fee.
Office Hours
Monday-Friday: 10:00am-6:00pm
Saturday: 10:00am-5:00pm
Sunday: 12:00pm-5:00pm


text:
Purchase of land for veterans cemetery complete
Published On: Jan 22 2014 03:26:40 PM CST
Updated On: Jan 22 2014 03:30:23 PM CST
Updated On: Jan 22 2014 03:30:23 PM CST
Congressman Scott Tipton says the Department of Veterans Affairs has completed the purchase of land southeast of Colorado Springs for a new national veterans cemetery.
Tipton's office says the Southern Colorado National Veterans Cemetery will be built on 374 acres known as Rolling Hills. The property is located east of Marksheffel Road between Drennan Road and Bradley Road.
Approximately 95,000 veterans and family members live in southern Colorado. The closest national veterans cemeteries currently are Fort Logan near Denver and Fort Lyon in Las Animas.
Copyright 2014 KRDO. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


text:
Tense New York Convention A "Gut Check" For Democrats
"We have to regain the confidence of the electorate that we don't just say we stand for something different, but we really can effectively deliver," says Schneiderman.
"We have to regain the confidence of the electorate that we don't just say we stand for something different, but we really can effectively deliver," says Schneiderman.
Jacob Fischler 5 months ago 2 responses
In New York City, all politics is identity politics. New Yorkers vote for mayor Tuesday, and Bill de Blasio seems to be winning this game.
Jacob Fischler a year ago 13 responses
Anthony Weiner may be stealing the show, but he's hardly the only New York politician that's become engulfed in scandal over the last few months.
Jacob Fischler a year ago 11 responses
The glitziest state senate candidate tries to bar The Jewish Channel from covering her fundraiser after she didn't attend their debate.
Rosie Gray 2 years ago 10 responses
Ostensibly related to accusations that the New York Post editor (Fred Dicker) sent photographers to harrass Paladino's 10-year-old daughter (who he had out of wedlock). Read More ›
Jack Shepherd 4 years ago respond
EMAIL firstname.lastname@example.com
TWITTER @katherinemiller
EMAIL firstname.lastname@example.com
EMAIL email@example.com
TWITTER @mckaycoppins
EMAIL email@example.com
TWITTER @rubycramer
EMAIL email@example.com
TWITTER @ItsFischy
EMAIL email@example.com
TWITTER @chrisgeidner
EMAIL firstname.lastname@example.com
TWITTER @rosiegray
EMAIL email@example.com
TWITTER @BuzzFeedAndrew
EMAIL firstname.lastname@example.com
TWITTER @evanmcsan
EMAIL firstname.lastname@example.com
TWITTER @katenocera
EMAIL email@example.com
TWITTER @dorseyshaw
EMAIL email@example.com
TWITTER @dcbigjohn
BuzzFeed is currently working with select partners to help them track what's hot on their sites using the same advanced social tracking and analytics tools used on BuzzFeed.com.
If you're interested, contact us at firstname.lastname@example.com.


text:
view bio »
UTC's women's coach Colette Murray.Photo by Matt Fields-Johnson /Chattanooga Times Free Press.
Tears were inevitable for University of Tennessee at Chattanooga women's golf coach Colette Murray.
Either she would witness one of the greatest rounds in school history from senior Maria Juliana Loza or she would witness Loza's final round of golf as a member of the Mocs.
Loza shot a 4-over 76 that left her in a tie for 19th place at 5 over for the NCAA East Regional at the Penn State Blue Course in State College, Pa.
If she had played three strokes better, Loza would have been in a playoff to advance to the NCAA championship tournament as an individual.
"I played for my team, and only today I thought of me as having a chance to go," said Loza, a native of Colombia. "It was a great week. Today was just a rough day."
As a team, the Mocs finished in 19th place at 55-over 919 for the three-day tournament.
The top eight teams -- South Carolina at 9 over, followed by Texas A&M, Texas, Alabama, Florida, Arizona State, Michigan State and Duke -- advanced.
"I'm a little disappointed because we didn't play as well as we should have or could have," Murray said via cell phone. "Going to nationals would have been a huge achievement for us. But this week we didn't give ourselves a chance."
UTC sophomore Jordan Britt, who prepped at GPS and Signal Mountain, tied for 46th place after a final-round 70.
Marion Duvernay shot 230, Sophie Weilguni shot 246 and Mette Kryger shot 250 for the tournament. They are sophomores also.
"Maju didn't go out without a fight," Murray said. "She's always been my little fighter. She did that again for us."
Alabama senior Brooke Pancake, who prepped at Baylor School, shot a final-round 76 and tied for 35th at 7 over for the tournament.
David Uchiyama is a sports writer at the Chattanooga Times Free Press who began his tenure here in May 2001. His primary beats are UTC athletics — specifically men's basketball and athletic department administration — and golf, which includes coverage from the PGA Tour to youth events. He also covers other high school sports, outdoor adventures, and contributes to other sections of the newspaper when necessary. David grew up in Salinas, Calif., and began working ...


text:
Welcome to the blog of the Functional Programming Lab at the University of Nottingham!
To post something, read the instructions at http://bitbucket.org/fplab/hblog.
by Ivan Perez on September 23, 2014
Earlier this month, Henrik Nilsson presented a tutorial on Declarative Game Programming at PPDP 14.
The goal of the tutorial was to show how real game programming is possible in a purely functional, declarative way. The approach used in Functional Reactive Programming, defining games as networks of interconnected signals and signal transformers, results in clear, reusable, modular code.
To illustrate this idea, we created a Haskell game that features some of the complex elements found in arcade games: SDL graphics and sound, Wiimote controls, and differentiated subsystems for rendering and sound, game input, physics/collisions, game logic, etc. The game has several levels, and more can be added easily.
All the material of this talk is now available, including the slides and the complete game code:
The code has substantial haddock documentation. You are encouraged to go through the program, point out any issues/questions you may have, suggest improvements and send pull requests.
The game is written in Haskell, using the new Yampa 0.9.6, hcwiid for wiimote access, and SDL 1.2 for multimedia.
A version of this Haskell game (on steroids) is being developed using SDL2. You can read the announcement and watch a video of the Haskell code running on a Android tablet here.
by Ivan Perez on August 29, 2014
A new version of the Arrowized Functional Reactive Programming (FRP) library Yampa has been released.
This new version includes a lot of haddock documentation, finally addressing the old issue of having to browse a large collection of papers and the code to find information about the API.
There are no changes to the API itself, so this version remains backwards compatible. Future releases will seek to improve this documentation and introduce other optimisations as mandated by users' needs.
Additionally, Henrik Nilsson will give a tutorial on Declarative Game Programming at PPDP 2014, which will take place in Canterbury (UK) on September 8-10 (http://users-cs.au.dk/danvy/ppdp14/).
Links and more:
Hackage package: http://hackage.haskell.org/package/Yampa-0.9.6.
Project page: https://github.com/ivanperez-keera/Yampa
Haskell Wiki page (examples, papers): http://www.haskell.org/haskellwiki/Yampa
(Another) Release announcement: http://keera.co.uk/blog/2014/08/29/new-version-yampa-0-9-6.
by nicolai on February 7, 2013
In the Type Theory meeting last week, I have given an overview over the categorical semantics of dependent type theory. The semantics of the simply typed lambda calculus are well-known and generally accepted, but this is not so much true for the dependently typed setting. Also, it is not so easy to state the conditions on a category \(\mathbb C\) to be suitable for the construction of a model. Often, people just say that \(\mathbb C\) should be locally cartesian closed. This makes a lot of sense, but is neither really sufficient, nor necessary. However, for the moment, it is a good description for \(\mathbb C\).
We interpret every (valid) context as an object in \(\mathbb C\). For the simply typed lambda calculus, it is not too important to distinguish between contexts and types. This is more subtle for dependent types, as not every type is closed. We have typing judgments \[ \Gamma \vdash A \textit{ : type}, \] and from such a judgment, we get a new valid context, often written \(\Gamma.A\), the context extension. We interprete this judgment as a morphism between these contexts: \[[[ \Gamma \vdash A \textit{ : type} ]] \; : \; [[ \Gamma.A ]] \to [[ \Gamma ]]. \] One should think of this map as a projection, that "projects A away". Being lazy, one also writes \([[A]]\) instead of the rather long expression above. In the simply typed setting, one usually models types as objects. Equivalently, one could model a type as the unique morphism from the object to the terminal object.
If we have the type judgment above, we can also have a term of this type, \[ \Gamma \vdash t \, : \, A .\] We model this judgment as a section of the type judgment, i.e. it is a morphism from \([[\Gamma ]]\) to \([[\Gamma.A]]\) such that \[ [[ \Gamma \vdash A \textit{ : type} ]] \; \circ \; [[ \Gamma \vdash t \, : \, A]] \; = \; \operatorname{id}_{[[\Gamma]]}, \] or just \([[A]] \circ [[t]]\) in the lazy version.
The nice thing is that we can do many things in the same way as it works for the simply typed case; we just need to restrict ourselves to the slice category over \([[\Gamma]]\), if we work in context \(\Gamma\). For example, for the simply typed lambda calculus, we use exponentials to model function types. Note that the functor "\(A\to\)", or \(\_^A\), is right adjoint to the product functor \(\_ \times A\). The product with \([[A]]\) in the slice over \([[\Gamma]]\) is nothing else but the pullback along \([[A]]\), let us write \(A^*\), and we get dependent function types as the right adjoints of these pullbacks. Similarly, we get dependent sums as left adjoints of these pullbacks. Summarized, we have \[\Sigma_A \dashv A^* \dashv \Pi_A.\] One can convince oneself that this makes sense by drawing a couple of diagrams.
I think these semantics have first been described by Seely. "Locally Cartesian Closed Categories and Type Theory", and have since then often been discussed; in particular, there is a coherence problem (things that hold strictly in type theory can, by default, only be described up to isomorphism in category theory). The (arguable) cleanest solution for this problem is a universe construction by Voevodsky. The plan is that more detailed semantics, together with this construction, the presheaf of simplicial sets, and univalence, will be the topics of the Type & Homotopy Theory meetings, as well as the Sheaf Theory seminars, in the next two weeks.
by Venanzio on December 15, 2012
Today is the 100th anniversary of the birth of Reuben Goodstein. It's a very young age for someone immortalized by his voyages into the transfinite realm. A few months ago I talked about his theorem during an FP lunch. After some wait, here is a blog post about it.
Every natural number \(x\) can be put in Cantor normal form with respect with any base \(b\). First we write \(x\) in base \(b\), as a sum of powers of \(b\) multiplied by coefficients smaller than \(b\), for example, if \(x=68630377369258\) and \(b=3\) we have \[ 68630377369258 = 3^{29} + 3^7\cdot 2 + 1 \] We recursively write the exponents in the same base: \[ 29 = 3^3+2 = 3^{3^1}+2, \quad 7 = 3\cdot 2 +1 = 3^1\cdot 2+1 \] Thus the Cantor normal form of 68630377369258 in base 3 is: \[ 68630377369258 = 3^{3^{3^1}+2} + 3^{3^1\cdot 2+1}\cdot 2 + 1 \] So a Cantor normal form in base b expresses a number x as \(x = b^{c_0} \cdot a_0 + b^{c_1} \cdot a_1 + \cdots + b^{c_n} \cdot a_n\) where \(c_0\), ..., \(c_n\) are themselves Cantor normal forms.
Abstractly, generalizing over the base, it's a list of pairs of coefficients and exponents, which are themselves Cantor normal forms. Here it is expressed as a Haskell data type with functions converting between it and naturals with respect to a given base.
data Cantor = Cantor [(Integer, Cantor)]
deriving Show
-- (cantNum c b) computes the number with CNF c in base b
cantNum :: Cantor -> Integer -> Integer
cantNum (Cantor l) = cantNumL l
cantNumL :: [(Integer,Cantor)] -> Integer -> Integer
cantNumL [] _ = 0
cantNumL ((i,c):cs) base = i*base^(cantNum c base) + cantNumL cs base
-- (numCant b x) computes the CNF of x in base b
numCant :: Integer -> Integer -> Cantor
numCant base = Cantor . map (\(c,n) -> (c,numCant base n)) . (inBase base)
iLog :: Integer -> Integer -> Integer
iLog base n = iLogAux 0 1
where iLogAux i k = if (k*base)>n then i else iLogAux (i+1) (k*base)
inBase :: Integer -> Integer -> [(Integer,Integer)]
inBase base 0 = []
inBase base n = (n `div` k,i) : inBase base (n `rem` k)
where i = iLog base n
k = base^i
Now take a Cantor normal form (CNF), change the base and recompute the number. For example, earlier we had the CNF of \(68630377369258\) in base 3. If we change the base to 4 we obtain \[ \begin{array}{l} 3^{3^{3^1}+2} + 3^{3^1\cdot 2+1}\cdot 2 + 1 \leadsto 4^{4^{4^1}+2} + 4^{4^1\cdot 2+1}\cdot 2 + 1\\ = 21452492687908155359318439997129353803966985312947829\\ \quad 40435769830995482244811767516288299887706704548430405\\ \quad 09730983776813660062124991145119142938384097869825. \end{array} \] The number has become much bigger, so let's make it smaller by subtracting one! \[ \begin{array}{l} 21452492687908155359318439997129353803966985312947829\\ 40435769830995482244811767516288299887706704548430405\\ 09730983776813660062124991145119142938384097869825 - 1 \\ = 21452492687908155359318439997129353803966985312947829 \\ \quad 40435769830995482244811767516288299887706704548430405 \\ \quad 09730983776813660062124991145119142938384097869824. \end{array} \] This is one step of the Goodstein procedure: find the Cantor normal form of a number \(x\) with respect to a base \(b_1\), change the base to \(b_2\), recompute the number and subtract one. The Goodstein sequence associated with a number is obtained by iterating the step increasing the base by one every time.
-- (goodstep b1 b2 n) first finds the CNF of n in base b1
-- then recomputes it in base b2 and subtracts 1
goodstep :: Integer -> Integer -> Integer -> Integer
goodstep base1 base2 n = cantNum (numCant base1 n) base2 - 1
-- Given a list of bases and a number n
-- we iterate the Goodstein step on n using all the bases
goodsteinGen :: [Integer] -> Integer -> [Integer]
goodsteinGen _ 0 = []
goodsteinGen (b1:b2:bs) n = n : goodsteinGen (b2:bs) (goodstep b1 b2 n)
goodstein :: Integer -> [Integer]
goodstein = goodsteinGen [2..]
Let's compute a few:
*Main> goodstein 1
*Main> goodstein 2
*Main> goodstein 3
Now do what I did: run it on 4 on your university's server and enjoy the screams of frustration of your colleagues when everything hangs up.
Although computing the Goodstein sequence for 4 is not feasible in practice, one can prove that it terminates.
The Goodstein procedure terminates on every starting number.
Although the theorem has a simple formulation and a short elegant proof, it cannot be proved in Peano Arithmetic: it essentially needs transfinite induction. It is probably the simplest result that is undecidable in PA.
The proof consists in associating an ordinal to every CNF, proving that every step in the process reduces this ordinal and therefore concluding that the process terminates by well-foundedness of the ordinal numbers.
Given a CNF, just compute it using the ordinal \(\omega\) (the ordinal associated to the natural numbers) as a base. The example that we've seen earlier gives: \[ \omega^{\omega^{\omega^1}+2} + \omega^{\omega^1\cdot 2+1}\cdot 2 + 1 \] (Addition and multiplication of transfinite ordinals are not commutative; to get the correct result the coefficients must be multiplied on the right and the terms must be in decreasing order.)
Now it is very easy to see that every step reduces the ordinal. If the CNF contained a non-zero term with the base raised to the power zero (that is, if the number is not divisible by the base) then the associated ordinal is a successor an the step will just give its predecessor. Otherwise there is a bigger decrease in the ordinal (depending on the base used).
In any case, we get a decreasing sequence of ordinals that will eventually reach zero. This proves the theorem.
Since every tower of exponentiation of the base is a valid CNF, we get that every ordinal smaller that \(\epsilon_0\) can occur: \[ \epsilon_0 = \sup \{\omega, \omega^\omega, \omega^{\omega^\omega}, \ldots\}. \] So we are doing \(\epsilon_0\)-induction, which goes beyond elementary arithmetic.
by Nicolai Kraus on December 12, 2012
Last Friday (07/12/12), I have talked about the difficulties of quotients in Homotopy Type Theory.
Traditionally, the quotient \(A/\sim\) of a set \(A\) by some equivalence relation \(\sim : A \to A \to \textbf{Prop}\) is a set \(Q\) (or, by abuse of notation, just \(A/\sim\) , think of the set of equivalence classes), together with a function \([\_] : A \to Q\) (mapping every element on its equivalence class) and an eliminator. The latter says, more or less, whenever a function \(f : A \to C\) does not distinguish between elements that are \(\sim\)-equivalent, it can be lifted to a function \(\overline f : Q \to C\). For the details, I would recommend Definable Quotients in Type Theory by Nuo, Thomas and Thorsten.
This is a very natural concept and, in some cases, it is necessary. For example, the real numbers cannot be defined without quotients (this statement refers only to Type Theory, but even in classical mathematics, notions as the Cauchy Reals make usage of quotients). However, the concept becomes much more involved as soon as the principle UIP (uniqueness of identity proofs) is dropped. It would make sense to generalise the notion of an equivalence relation, but even if we don't, it is not clear at all what it means for a function to "not distinguish between elements that are equivalent". Without UIP, the actual proofs and their behaviours matter, while we did not have to care about that issue before.
I talked about the example of the possibly simplest equivalence relation, which is constantly \(\textbf{True}\). In that case, the quotient should be the h-propositional reflection (also known as "squash-type" or "bracket-type"), but it is already very hard to formalise the conditions under which a function \(f : A \to C\) can be lifted to \(Q \to C\). Informally, for any finite number of points in \(A\), we can, by induction on the number of points, define the corresponding simplex in \(Q\), and the condition on \(f\) is that these simplices can be built out of coherence proofs. This leads to one of the standard constructions when it comes to \(\omega\)-category theory, and possibly to concepts that are well-known in Homology. Of course, the first goal is the formalisation of the informally described idea.
by Venanzio on December 6, 2012
The type theory meeting of Wednesday 5 December was a short introduction to induction-recursion with a divagation about impredicativity.
Martin-Löf distinguishes universes à la Russell and universes à la Tarski. The difference is that a Russell-style Universe \({\mathsf{U}}\) is a type such that any of its elements \(A:{\mathsf{U}}\) is itself a type; while a Tarski-style universe is a set \({\mathsf{U}}\) of codes together with a decoding function \({\mathsf{Elem}}: {\mathsf{U}}\rightarrow {\mathsf{Type}}\).
A simple Tarski universe with non-dependent types can be defined by plain induction and the decoding function is given by recursion on it: \[ \begin{array}{l} {\mathsf{U}}: {\mathsf{Type}}\\ {\mathsf{zero}}: {\mathsf{U}}\\ {\mathsf{one}}: {\mathsf{U}}\\ {\mathsf{plus}}: {\mathsf{U}}\rightarrow {\mathsf{U}}\rightarrow {\mathsf{U}}\\ {\mathsf{times}}: {\mathsf{U}}\rightarrow {\mathsf{U}}\rightarrow {\mathsf{U}}\\ \end{array} \quad \begin{array}{l} {\mathsf{Elem}}: {\mathsf{U}}\rightarrow {\mathsf{Type}}\\ {\mathsf{Elem}}\,{\mathsf{zero}}= \emptyset\\ {\mathsf{Elem}}\,{\mathsf{one}}= \{\bullet\}\\ {\mathsf{Elem}}\,({\mathsf{plus}}\,a\,b) = {\mathsf{Elem}}\,a + {\mathsf{Elem}}\,b\\ {\mathsf{Elem}}\,({\mathsf{times}}\,a\,b) = {\mathsf{Elem}}\,a \times {\mathsf{Elem}}\,b \end{array} \]
But when we want to add constructors \({\mathsf{pi}}\) and \({\mathsf{sigma}}\) for dependent products and sums to \({\mathsf{U}}\), then the definitions of \({\mathsf{U}}\) and \({\mathsf{Elem}}\) become entangled: \({\mathsf{Elem}}\) occurs in the type of the constructors of \({\mathsf{U}}\): \[ \begin{array}{l} {\mathsf{pi}}: {\Pi\,}a:{\mathsf{U}}, ({\mathsf{Elem}}\, a \rightarrow {\mathsf{U}}) \rightarrow {\mathsf{U}}\\ {\mathsf{sigma}}: {\Pi\,}a:{\mathsf{U}}, ({\mathsf{Elem}}\, a \rightarrow {\mathsf{U}}) \rightarrow {\mathsf{U}}\\ \ \\ {\mathsf{Elem}}\, ({\mathsf{pi}}\,a\,b) = {\Pi\,}x:{\mathsf{Elem}}\, a, {\mathsf{Elem}}\, (b\, x)\\ {\mathsf{Elem}}\, ({\mathsf{sigma}}\,a\,b) = {\Sigma\,}x:{\mathsf{Elem}}\, a, {\mathsf{Elem}}\, (b\, x) \end{array} \] This was the first instance of an inductive-recursive definition: the simultaneous specification of an inductive type and a recursive function on it.
The construction can be iterated and generalized. We can define another universe \({\mathsf{U}}_1\) that contains \({\mathsf{U}}\) by the same recursive-inductive specification plus a code \(\mathsf{u}_0:{\mathsf{U}}_1\) with associated type \({\mathsf{Elem}}\, \mathsf{u}_0 = {\mathsf{U}}\). In fact, if we already defined an entire family of universes, we can use this construction to create an new universe that contains them all. Eric Palmgren introduced a superuniverse that is closed under this universe-creation rule.
Peter Dybjer further generalized the construction and invented simultaneous inductive-recursive definitions. These allow us to define an inductive type together with a recursive function on it. The function is allowed to appear in the type of the constructors; but there must be syntactic restrictions to guarantee that it is applied to arguments that are smaller than the one generated by the constructor. Later Dybjer and Anton Setzer devised a elegant type of codes for inductive-recursive definitions (we'll look at it on a future meeting).
A simple example is the type of lists without repetitions, by Catarina Coquand. The type is defined simultaneously with a freshness relation that guarantees that we can only add elements that are not already in the list. \[ \begin{array}{l} {\mathsf{FList}}\, (A:{\mathsf{Set}}): {\mathsf{Set}}\\ {\mathsf{fnil}}: {\mathsf{FList}}\, A\\ {\mathsf{fcons}}: {\Pi\,}x:A, {\Pi\,}l:{\mathsf{FList}}\, A, {\mathsf{Fresh}}\, x\, l \rightarrow {\mathsf{FList}}\, A\\ \ \\ {\mathsf{Fresh}}: A \rightarrow {\mathsf{FList}}\, A \rightarrow {\mathsf{Prop}}\\ {\mathsf{Fresh}}\, x\, {\mathsf{fnil}}= \top\\ {\mathsf{Fresh}}\, x\, ({\mathsf{fcons}}\, y\, l\, p) = (x\neq y) \land {\mathsf{Fresh}}\, x\, l \end{array} \]
Ana Bove and I used inductive-recursive definitions to formalize general recursive functions in type theory. The idea is to characterize the domain of a function by an inductive predicate and then define the function itself by recursion on the proof of the predicate. Take for example the quicksort algorithm. In Haskell it is written as:
quicksort :: [A] -> [A]
quicksort [] = []
quicksort (x:l) = quicksort ll ++ x : quicksort lr
where ll = [y | y <- l, y<=x]
lr = [y | y <- l, y>x]
The arguments of the recursive calls are not subterms of the principal argument, so this definition is not accepted in systems like Coq or Agda. Instead we can first define an inductive domain predicate: \[ \newcommand{\dnil}{\mathsf{d}_{{\mathsf{nil}}}} \newcommand{\dcons}{\mathsf{d}_{{\mathsf{cons}}}} \newcommand{\append}{\mathop{+\!\!+}} \begin{array}{l} {\mathsf{D}_{{\mathsf{qs}}}} : {\mathsf{List}}\, A \rightarrow {\mathsf{Prop}}\\ \dnil : {\mathsf{D}_{{\mathsf{qs}}}}\,{\mathsf{nil}}\\ \dcons : {\Pi\,}x:A, {\Pi\,}l:{\mathsf{List}}\, A, {\mathsf{D}_{{\mathsf{qs}}}}\, {l_{\leq x}}\rightarrow {\mathsf{D}_{{\mathsf{qs}}}}\, {l_{>x}}\rightarrow {\mathsf{D}_{{\mathsf{qs}}}}\, ({\mathsf{cons}}\, x\, l) \end{array} \] where \({l_{\leq x}}\) and \({l_{>x}}\) are the lists of elements of \(l\) respectively less or equal and larger than \(x\). The actual sorting algorithm can be defined by structural recursion on the proof that the list satisfies the domain predicate: \[ \begin{array}{l} {\mathsf{qs}}: {\Pi\,}l:{\mathsf{List}}\,A, {\mathsf{D}_{{\mathsf{qs}}}} \rightarrow {\mathsf{List}}\,A\\ {\mathsf{qs}}\,{\mathsf{nil}}\,\dnil = {\mathsf{nil}}\\ {\mathsf{qs}}\,({\mathsf{cons}}\,x\,l)\,(\dcons\,x\,l\,p_1,p_2) = ({\mathsf{qs}}\,{l_{\leq x}}\,p_1) \append {\mathsf{cons}}\,x\,({\mathsf{qs}}\,{l_{>x}}\,p_2) \end{array} \]
In this case the function happens to be total: we can prove that the domain predicate is always satisfied, \(H:\forall l:{\mathsf{List}}\,A, {\mathsf{D}_{{\mathsf{qs}}}}\,l\). Therefore, we can eliminate the dependency on the proof: \({\mathsf{quicksort}}: {\mathsf{List}}\,A \rightarrow {\mathsf{List}}\,A\), \({\mathsf{quicksort}}\,l = {\mathsf{qs}}\,l\,(H\,l)\).
If the recursive function we try to implement has nested recursive calls, then we need induction-recursion. Take for example McCarthy's 91 function:
mccarthy :: Int -> Int
mccarthy n | n > 100 = n - 10
| otherwise = mccarthy (mccarthy (n+11))
The function always terminates and returns 91 on every argument less or equal to 101. However, the recursive calls are made on arguments that may be larger than the original input and are nested. We can formalize it in type theory in the same style as the quicksort algorithm:
\[ \newcommand{\mcc}{\mathsf{mc}} \newcommand{\dgr}{\mathsf{d}_{0}} \newcommand{\dls}{\mathsf{d}_{1}} \begin{array}{l} {\mathsf{D}_{\mcc}} : {\mathbb{N}}\rightarrow {\mathsf{Prop}}\\ \dgr : {\Pi\,}n:{\mathbb{N}}, n>100 \rightarrow {\mathsf{D}_{\mcc}}\,n\\ \dls : {\Pi\,}n:{\mathbb{N}}, n\leq 100 \rightarrow \\ \qquad {\Pi\,}h: {\mathsf{D}_{\mcc}}\,(n+11), {\mathsf{D}_{\mcc}}\,(\mcc\,(n+11)\,h) \rightarrow {\mathsf{D}_{\mcc}}\,n \\ \ \\ \mcc : {\Pi\,}n:{\mathbb{N}}, {\mathsf{D}_{\mcc}}\,n \rightarrow {\mathbb{N}}\\ \mcc\,n\,(\dgr\,n\,p) = n - 10\\ \mcc\,n\,(\dls\,n\,p\,h_1\,h_2) = \mcc\,(\mcc\,(n+11)\,h_1)\,h_2 \end{array} \] In this case we used the function \(\mcc\) in the type of the constructor \(\dls\), which makes it a simultaneous inductive-recursive definition.
I've been a bit too casual in defining the domain predicates as functions to \({\mathsf{Prop}}\). There are issues related to the consistency of elimination rules between type universes. You can simply adopt the Curry-Howard correspondence in full and replace \({\mathsf{Prop}}\) everywhere with \({\mathsf{Set}}\). However, if instead you have a separate impredicative universe of proposition (as, for example, in Coq), then there are consistency problems.
Impredicativity refers to the possibility of quantifying over a type universe and obtaining an element of that same universe. In general, the formation rule of product types can be formulated as follows: \[ \dfrac {A:s_1 \quad x:A \vdash B[x]:s_2} {{\Pi\,}x:A, B[x] : s_3} \] where \(s_1\), \(s_2\) and \(s_3\) are sorts (type universes). One can define a Pure Type System by specifying a set of such rules simply by giving the triples \((s_1,s_2,s_3)\) and some axioms in the form \(s_1:s_2\). We have that a sort \(s_1\) is impredicative if there is an axiom \(s_1:s_2\) and a rule for \({\Pi\,}\)-types with triple \((s_2,s_1,s_1)\). In our specific case, \(s_1 = {\mathsf{Prop}}\) and \(s_2 = {\mathsf{Set}}\): we can quantify over any set, including the set of all propositions.
The most famous impredicative theory is Girard's system F. Girard proved that the normalization property of his system was equivalent to the consistency of second order Peano Arithmetic, that is, analysis. He then proved normalization with the new technique of reducibility candidates.
Although pure type systems only have function types, in an impredicative theory we can encode inductive types by the polymorphic quantification of their iterators. For example, the natural numbers can be defined in system F as \[ {\mathbb{N}}= {\Pi\,}X:{\mathsf{Set}}, X \rightarrow (X\rightarrow X) \rightarrow X \] (In this case it is the sort \({\mathsf{Set}}\) that's impredicative).
If \({\mathsf{Prop}}\) is impredicative, eliminating an inductive proposition over a set like I have done is forbidden. Allowing this kind of elimination in general would lead to a contradiction, a version of Girard's paradox described by Thierry Coquand.
However, there is a nice trick to get around it; it was taught to me by Christine Paulin. There is no contradiction if the proposition you eliminate has at most one proof. This is in fact the case for our domain predicates. To convince Coq to accept our formalization we need to modify it slightly by defining destructors for the proofs, for example: \[ \newcommand{\getlx}{\mathsf{get}_{\leq x}} \newcommand{\getgx}{\mathsf{get}_{>x}} \begin{array}{l} \getlx : {\Pi\,}x:A, {\Pi\,}l:{\mathsf{List}}\,A,{\mathsf{D}_{{\mathsf{qs}}}}\, ({\mathsf{cons}}\, x\, l) \rightarrow {\mathsf{D}_{{\mathsf{qs}}}}\, {l_{\leq x}}\\ \getlx\,({\mathsf{cons}}\, x\, l)\,(\dcons\,x\,l\,h_1\,h_2) = h_1\\ \ \\ \getgx : {\Pi\,}x:A, {\Pi\,}l:{\mathsf{List}}\,A, {\mathsf{D}_{{\mathsf{qs}}}}\, ({\mathsf{cons}}\, x\, l) \rightarrow {\mathsf{D}_{{\mathsf{qs}}}}\, {l_{\leq x}}\\ \getgx\,({\mathsf{cons}}\, x\, l)\,(\dcons\,x\,l\,h_1\,h_2) = h_2\\ \ \\ \end{array} \] Then we use these destructors to extract the subproofs when defining the function: \[ \begin{array}{l} {\mathsf{qs}}\,({\mathsf{cons}}\,x\,l)\,h =\\ \qquad ({\mathsf{qs}}\,{l_{\leq x}}\,(\getlx\,x\,l\,h)) \append {\mathsf{cons}}\,x\,({\mathsf{qs}}\,{l_{>x}}\,(\getgx\,x\,l\,h)). \end{array} \]
Per Martin-Löf, Intuitionistic type theory, Napoli, Bibliopolis, 1984.
Eric Palmgren, On universes in type theory, in: G. Sambin and J. Smith (eds.) Twenty Five Years of Constructive Type Theory, Oxford Logic Guides, 1998.
Peter Dybjer, A General Formulation of Simultaneous Inductive-Recursive Definitions in Type Theory, J. Symb. Log. 65(2): 525-549 (2000).
Peter Dybjer and Anton Setzer, A Finite Axiomatization of Inductive-Recursive Definitions, TLCA 1999:129-146.
Ana Bove and Venanzio Capretta, Nested General Recursion and Partiality in Type Theory, in TPHOLs 2001, LNCS 2152, pages 121-135.
Henk Barendregt, Lambda calculi with Types, in: Handbook of Logic in Computer Science, Vol 2, OUP, (1992), pp 117-309.
Jean-Yves Girard, Yves Lafont and Paul Taylor, Proofs and Types, Cambridge Tracts in Theoretical Computer Science, 1989
Thierry Coquand, An Analysis of Girard's Paradox, LICS 1986: 227-236.