Stream: general

Topic: Arend — HoTT ITP

Johan Commelin (Aug 07 2019 at 06:14):

https://arend-lang.github.io/2019/07/17/Arend-1.0.0-released.html

Johan Commelin (Aug 07 2019 at 06:57):

From my first glimpse it seems they have no bundling issues: https://arend-lang.github.io/about/arend-features#anonymous-extensions

Johan Commelin (Aug 07 2019 at 06:58):

Of course I can't say anything about speed.

Johan Commelin (Aug 07 2019 at 06:59):

Universes are cumulative

Johan Commelin (Aug 07 2019 at 07:00):

It's HoTT, so it has transport

Johan Commelin (Aug 07 2019 at 07:01):

What!! And \Prop is even impredicative.

Johan Commelin (Aug 07 2019 at 07:01):

Is this thing even consistent?

Andrew Ashworth (Aug 07 2019 at 07:05):

You can always pick 2 of: impredicative Prop, large elimination, and excluded middle

Johan Commelin (Aug 07 2019 at 07:06):

What does "large elimination" mean?

Andrew Ashworth (Aug 07 2019 at 07:09):

https://lean-forward.github.io/logical-verification/2018/41_notes.html

Andrew Ashworth (Aug 07 2019 at 07:10):

there's a section on large elimination in the notes

Johan Commelin (Aug 07 2019 at 07:11):

The list of editor features (Intellij) also looks quite nice: https://arend-lang.github.io/about/intellij-features

Johan Commelin (Aug 07 2019 at 07:11):

@Andrew Ashworth Thanks, I'll take a look

Johan Commelin (Aug 07 2019 at 07:17):

As an example of the bundling thing: they have

\class Group \extends CancelMonoid {
| inverse : E -> E
| inverse-left (x : E) : inverse x * x = ide
| inverse-right (x : E) : x * inverse x = ide


This allows you to write (X : \Type) (Group X) or (X : Group), and these two are defeq. At the same time, they can also write

\instance GroupCategory : Cat Group
=> subCat (\new Embedding {
| f (G : Group) => \new Monoid G.E G.ide (G.*) G.ide-left G.ide-right G.*-assoc
| isEmb G H => \new Retraction {
| sec => Group.equals G H
| f_sec => idpe
}
})


to prove that groups form a category.

There is no distinction between bundled and unbundled objects.

Johan Commelin (Aug 07 2019 at 07:22):

@Andrew Ashworth So you gave a pick-2-out-of-3. If I pick impredicative Prop and LEM, then I have to sacrifice large elimination. But do I sacrifice it for Prop, or in general?

Chris Hughes (Aug 07 2019 at 07:23):

I think in general would make your theory a bit useless.

Johan Commelin (Aug 07 2019 at 07:25):

It seems that Arend sacrifices LEM... which is a pity.

Chris Hughes (Aug 07 2019 at 07:27):

I don't understand how large elimination could be consistent.

Chris Hughes (Aug 07 2019 at 07:30):

This would give you a way to "choose" a bijection between types, which gives you em, at least in Lean.

Chris Hughes (Aug 07 2019 at 07:31):

So this HoTT must be weaker in some sense than Lean without choice

Jason Rute (Sep 06 2019 at 22:27):

I've looked into Arend (vs Lean) a bit and here is what I think I've found...

Jason Rute (Sep 06 2019 at 22:27):

I think, just like in Lean, \Prop in Arend is impredicative and does not allow large elimination. Also, like Lean, the \Type universe levels are predicative and support large elimination. I see nothing inconsistent about LEM (for \Prop) in Arend, especially since LEM (for propositions) is consistent in other HoTT systems.

Jason Rute (Sep 06 2019 at 22:27):

Indeed, to me, the foundations for Arend seem very similar to those for Lean, but contain more “levels” of types. An analogy (possibly too simplistic) is that Lean is a logic for propositions (Prop) and sets (Type) while Arend is a logic for propositions (\Prop), sets (\Set), and other higher homotopy spaces/types (\1-Type, \2-Type, …). This allows univalence since the univalence axiom requires that a type universe (except \Prop) not be a set.

Jason Rute (Sep 06 2019 at 22:28):

Now, in book HoTT, propositions and sets are defined. (A proposition is a type P for which all pairs of elements are equal, and a set is a type A for which every a = a' is a proposition). In Arend, however, it seems \Prop and \Set are also built into the type hierarchy. So if A : \Set and a a' : A, then the type of a = a' is Prop, judgmentally. In this way, Arend’s \Prop is similar to Lean’s Prop.

Jason Rute (Sep 06 2019 at 22:28):

In Lean, inductively defined propositions are formed through a special Prop-valued induction. Similarly, in Arend they are formed by truncating an inductively defined type to \Prop. So, logical disjunction \/ in \Prop would have the same definition as disjoint union + in \Type, except that the former is explicitly truncated to \Prop. This truncation prevents large elimination.

Jason Rute (Sep 06 2019 at 22:28):

When it comes to classical reasoning, that is where Lean and Arend/HoTT start to differ is subtle ways (that I don’t completely appreciate yet). HoTT is all about proof relevant reasoning, but proof relevant versions of classical reasoning are not compatible with the univalence axiom. From the Curry-Howard Isomorphism, the analogy of LEM in Type would be Π α : Type, α + (α -> empty) which contradicts univalence, and would be inconsistent in Arend. Instead, Arend/HoTT’s version of LEM replaces \Type with \Prop. In Lean, this is prop_decidable, but using the univalence axiom it is equivalent to the usual propositional LEM Π p : Prop, p ∨ ¬ p). In Lean, the “type-valued LEM” above is provable via Lean’s choice function, which takes a nonempty type and extracts a value. Arend/HoTT can’t have such a strong choice function. Instead, in the Arend/HoTT version of AC, all one can do is say is that if a set A is non-empty (proposition) then there exists (proposition) a choice function. Since “exists” here is a proposition, one can’t directly use that choice function for constructions except inside proofs of propositions. (Also, in Arend/HoTT there doesn’t propositionally exist one universal choice function, but instead one for each set-indexed family of non-empty sets.)

Jason Rute (Sep 06 2019 at 22:28):

Just like in Lean, in Arend’s version of HoTT, it seems useful to have an impredicative universe \Prop of propositions and predicative universes of other types. (Arend/HoTT also seems to make it easier to go between arbitrary types and \Prop by either proving that a type is a proposition or by truncating it to one.) How one uses \Prop seems to me to be a matter of taste, engineering, and philosophy. Should one lean into constructive, proof relevant mathematics trying to avoid \Prop whenever possible? Or, like Lean, should one embrace classical mathematics and propositions, adding AC (in the HoTT sense) as an axiom (while still getting univalence!). (Or is there a “best of both worlds”, where one uses arbitrary types for constructive, proof-relevant reasoning, and AC for classical reasoning in \Prop and \Set, all within the same system?)

Johan Commelin (Sep 07 2019 at 04:46):

@Jason Rute Thanks for this thorough comparison! It only makes it seem more interesting to me!