'/-' Comment '\n' Comment.Multiline 'C' Comment.Multiline 'o' Comment.Multiline 'p' Comment.Multiline 'y' Comment.Multiline 'r' Comment.Multiline 'i' Comment.Multiline 'g' Comment.Multiline 'h' Comment.Multiline 't' Comment.Multiline ' ' Comment.Multiline '(' Comment.Multiline 'c' Comment.Multiline ')' Comment.Multiline ' ' Comment.Multiline '2' Comment.Multiline '0' Comment.Multiline '1' Comment.Multiline '7' Comment.Multiline ' ' Comment.Multiline 'J' Comment.Multiline 'o' Comment.Multiline 'h' Comment.Multiline 'a' Comment.Multiline 'n' Comment.Multiline 'n' Comment.Multiline 'e' Comment.Multiline 's' Comment.Multiline ' ' Comment.Multiline 'H' Comment.Multiline 'ö' Comment.Multiline 'l' Comment.Multiline 'z' Comment.Multiline 'l' Comment.Multiline '.' Comment.Multiline ' ' Comment.Multiline 'A' Comment.Multiline 'l' Comment.Multiline 'l' Comment.Multiline ' ' Comment.Multiline 'r' Comment.Multiline 'i' Comment.Multiline 'g' Comment.Multiline 'h' Comment.Multiline 't' Comment.Multiline 's' Comment.Multiline ' ' Comment.Multiline 'r' Comment.Multiline 'e' Comment.Multiline 's' Comment.Multiline 'e' Comment.Multiline 'r' Comment.Multiline 'v' Comment.Multiline 'e' Comment.Multiline 'd' Comment.Multiline '.' Comment.Multiline '\n' Comment.Multiline 'R' Comment.Multiline 'e' Comment.Multiline 'l' Comment.Multiline 'e' Comment.Multiline 'a' Comment.Multiline 's' Comment.Multiline 'e' Comment.Multiline 'd' Comment.Multiline ' ' Comment.Multiline 'u' Comment.Multiline 'n' Comment.Multiline 'd' Comment.Multiline 'e' Comment.Multiline 'r' Comment.Multiline ' ' Comment.Multiline 'A' Comment.Multiline 'p' Comment.Multiline 'a' Comment.Multiline 'c' Comment.Multiline 'h' Comment.Multiline 'e' Comment.Multiline ' ' Comment.Multiline '2' Comment.Multiline '.' Comment.Multiline '0' Comment.Multiline ' ' Comment.Multiline 'l' Comment.Multiline 'i' Comment.Multiline 'c' Comment.Multiline 'e' Comment.Multiline 'n' Comment.Multiline 's' Comment.Multiline 'e' Comment.Multiline ' ' Comment.Multiline 'a' Comment.Multiline 's' Comment.Multiline ' ' Comment.Multiline 'd' Comment.Multiline 'e' Comment.Multiline 's' Comment.Multiline 'c' Comment.Multiline 'r' Comment.Multiline 'i' Comment.Multiline 'b' Comment.Multiline 'e' Comment.Multiline 'd' Comment.Multiline ' ' Comment.Multiline 'i' Comment.Multiline 'n' Comment.Multiline ' ' Comment.Multiline 't' Comment.Multiline 'h' Comment.Multiline 'e' Comment.Multiline ' ' Comment.Multiline 'f' Comment.Multiline 'i' Comment.Multiline 'l' Comment.Multiline 'e' Comment.Multiline ' ' Comment.Multiline 'L' Comment.Multiline 'I' Comment.Multiline 'C' Comment.Multiline 'E' Comment.Multiline 'N' Comment.Multiline 'S' Comment.Multiline 'E' Comment.Multiline '.' Comment.Multiline '\n' Comment.Multiline 'A' Comment.Multiline 'u' Comment.Multiline 't' Comment.Multiline 'h' Comment.Multiline 'o' Comment.Multiline 'r' Comment.Multiline 's' Comment.Multiline ':' Comment.Multiline ' ' Comment.Multiline 'J' Comment.Multiline 'o' Comment.Multiline 'h' Comment.Multiline 'a' Comment.Multiline 'n' Comment.Multiline 'n' Comment.Multiline 'e' Comment.Multiline 's' Comment.Multiline ' ' Comment.Multiline 'H' Comment.Multiline 'ö' Comment.Multiline 'l' Comment.Multiline 'z' Comment.Multiline 'l' Comment.Multiline '\n' Comment.Multiline '\n' Comment.Multiline 'Z' Comment.Multiline 'o' Comment.Multiline 'r' Comment.Multiline 'n' Comment.Multiline "'" Comment.Multiline 's' Comment.Multiline ' ' Comment.Multiline 'l' Comment.Multiline 'e' Comment.Multiline 'm' Comment.Multiline 'm' Comment.Multiline 'a' Comment.Multiline 's' Comment.Multiline '.' Comment.Multiline '\n' Comment.Multiline '\n' Comment.Multiline 'P' Comment.Multiline 'o' Comment.Multiline 'r' Comment.Multiline 't' Comment.Multiline 'e' Comment.Multiline 'd' Comment.Multiline ' ' Comment.Multiline 'f' Comment.Multiline 'r' Comment.Multiline 'o' Comment.Multiline 'm' Comment.Multiline ' ' Comment.Multiline 'I' Comment.Multiline 's' Comment.Multiline 'a' Comment.Multiline 'b' Comment.Multiline 'e' Comment.Multiline 'l' Comment.Multiline 'l' Comment.Multiline 'e' Comment.Multiline '/' Comment.Multiline 'H' Comment.Multiline 'O' Comment.Multiline 'L' Comment.Multiline ' ' Comment.Multiline '(' Comment.Multiline 'w' Comment.Multiline 'r' Comment.Multiline 'i' Comment.Multiline 't' Comment.Multiline 't' Comment.Multiline 'e' Comment.Multiline 'n' Comment.Multiline ' ' Comment.Multiline 'b' Comment.Multiline 'y' Comment.Multiline ' ' Comment.Multiline 'J' Comment.Multiline 'a' Comment.Multiline 'c' Comment.Multiline 'q' Comment.Multiline 'u' Comment.Multiline 'e' Comment.Multiline 's' Comment.Multiline ' ' Comment.Multiline 'D' Comment.Multiline '.' Comment.Multiline ' ' Comment.Multiline 'F' Comment.Multiline 'l' Comment.Multiline 'e' Comment.Multiline 'u' Comment.Multiline 'r' Comment.Multiline 'i' Comment.Multiline 'o' Comment.Multiline 't' Comment.Multiline ',' Comment.Multiline ' ' Comment.Multiline 'T' Comment.Multiline 'o' Comment.Multiline 'b' Comment.Multiline 'i' Comment.Multiline 'a' Comment.Multiline 's' Comment.Multiline ' ' Comment.Multiline 'N' Comment.Multiline 'i' Comment.Multiline 'p' Comment.Multiline 'k' Comment.Multiline 'o' Comment.Multiline 'w' Comment.Multiline ',' Comment.Multiline ' ' Comment.Multiline 'a' Comment.Multiline 'n' Comment.Multiline 'd' Comment.Multiline ' ' Comment.Multiline 'C' Comment.Multiline 'h' Comment.Multiline 'r' Comment.Multiline 'i' Comment.Multiline 's' Comment.Multiline 't' Comment.Multiline 'i' Comment.Multiline 'a' Comment.Multiline 'n' Comment.Multiline ' ' Comment.Multiline 'S' Comment.Multiline 't' Comment.Multiline 'e' Comment.Multiline 'r' Comment.Multiline 'n' Comment.Multiline 'a' Comment.Multiline 'g' Comment.Multiline 'e' Comment.Multiline 'l' Comment.Multiline ')' Comment.Multiline '.' Comment.Multiline '\n' Comment.Multiline '-/' Comment.Multiline '\n' Text 'import' Keyword.Namespace ' ' Text 'data.set.lattice' Name '\n' Text 'noncomputable theory' Keyword.Declaration '\n\n' Text 'universes' Keyword.Declaration ' ' Text 'u' Name '\n' Text 'open' Keyword.Namespace ' ' Text 'set' Name ' ' Text 'classical' Name '\n' Text 'local' Keyword.Namespace ' ' Text 'attribute' Keyword.Namespace ' ' Text '[' Operator 'instance' Keyword.Declaration ']' Operator ' ' Text 'decidable_inhabited' Name '\n' Text 'local' Keyword.Namespace ' ' Text 'attribute' Keyword.Namespace ' ' Text '[' Operator 'instance' Keyword.Declaration ']' Operator ' ' Text 'prop_decidable' Name '\n\n' Text 'namespace' Keyword.Namespace ' ' Text 'zorn' Name '\n\n' Text 'section' Keyword.Namespace ' ' Text 'chain' Name '\n' Text 'parameters' Keyword.Declaration ' ' Text '{' Operator 'α' Name ' ' Text ':' Operator ' ' Text 'Type' Keyword.Type ' ' Text 'u' Name '}' Operator ' ' Text '{' Operator 'r' Name ' ' Text ':' Operator ' ' Text 'α' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'α' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'Prop' Keyword.Type '}' Operator '\n' Text 'local' Keyword.Namespace ' ' Text 'infix' Keyword.Declaration ' ' Text '`' Name.Builtin.Pseudo ' ' Text '≺' Name.Builtin.Pseudo ' ' Text '`' Name.Builtin.Pseudo ':' Operator '50' Literal.Number.Integer ' ' Text ':=' Operator ' ' Text 'r' Name '\n\n' Text 'def' Keyword.Declaration ' ' Text 'chain' Name ' ' Text '(' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name ')' Operator ' ' Text ':=' Operator ' ' Text 'pairwise_on' Name ' ' Text 'c' Name ' ' Text '(' Operator 'λ' Name.Builtin.Pseudo 'x' Name ' ' Text 'y' Name ',' Operator ' ' Text 'x' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'y' Name ' ' Text '∨' Name.Builtin.Pseudo ' ' Text 'y' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'x' Name ')' Operator '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'chain_insert' Name ' ' Text '{' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name '}' Operator ' ' Text '{' Operator 'a' Name ' ' Text ':' Operator ' ' Text 'α' Name '}' Operator ' ' Text '(' Operator 'hc' Name ' ' Text ':' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ')' Operator ' ' Text '(' Operator 'ha' Name ' ' Text ':' Operator ' ' Text '∀' Name.Builtin.Pseudo 'b' Name '∈' Name.Builtin.Pseudo 'c' Name ',' Operator ' ' Text 'b' Name ' ' Text '≠' Name.Builtin.Pseudo ' ' Text 'a' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'a' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'b' Name ' ' Text '∨' Name.Builtin.Pseudo ' ' Text 'b' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'a' Name ')' Operator ' ' Text ':' Operator '\n ' Text 'chain' Name ' ' Text '(' Operator 'insert' Name ' ' Text 'a' Name ' ' Text 'c' Name ')' Operator ' ' Text ':=' Operator '\n' Text 'forall_insert_of_forall' Name '\n ' Text '(' Operator 'assume' Keyword ' ' Text 'x' Name ' ' Text 'hx' Name ',' Operator ' ' Text 'forall_insert_of_forall' Name ' ' Text '(' Operator 'hc' Name ' ' Text 'x' Name ' ' Text 'hx' Name ')' Operator ' ' Text '(' Operator 'assume' Keyword ' ' Text 'hneq' Name ',' Operator ' ' Text '(' Operator 'ha' Name ' ' Text 'x' Name ' ' Text 'hx' Name ' ' Text 'hneq' Name ')' Operator '.' Name.Builtin.Pseudo 'symm' Name ')' Operator ')' Operator '\n ' Text '(' Operator 'forall_insert_of_forall' Name ' ' Text '(' Operator 'assume' Keyword ' ' Text 'x' Name ' ' Text 'hx' Name ' ' Text 'hneq' Name ',' Operator ' ' Text 'ha' Name ' ' Text 'x' Name ' ' Text 'hx' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'assume' Keyword ' ' Text "h'" Name ',' Operator ' ' Text 'hneq' Name ' ' Text "h'.symm" Name ')' Operator ' ' Text '(' Operator 'assume' Keyword ' ' Text 'h' Name ',' Operator ' ' Text '(' Operator 'h' Name ' ' Text 'rfl' Name ')' Operator '.' Name.Builtin.Pseudo 'rec' Name ' ' Text '_' Name ')' Operator ')' Operator '\n\n' Text 'def' Keyword.Declaration ' ' Text 'super_chain' Name ' ' Text '(' Operator 'c₁' Name ' ' Text 'c₂' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name ')' Operator ' ' Text ':=' Operator ' ' Text 'chain' Name ' ' Text 'c₂' Name ' ' Text '∧' Name.Builtin.Pseudo ' ' Text 'c₁' Name ' ' Text '⊂' Name.Builtin.Pseudo ' ' Text 'c₂' Name '\n\n' Text 'def' Keyword.Declaration ' ' Text 'is_max_chain' Name ' ' Text '(' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name ')' Operator ' ' Text ':=' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ' ' Text '∧' Name.Builtin.Pseudo ' ' Text '¬' Name.Builtin.Pseudo ' ' Text '(' Operator '∃' Name.Builtin.Pseudo "c'" Name ',' Operator ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text "c'" Name ')' Operator '\n\n' Text 'def' Keyword.Declaration ' ' Text 'succ_chain' Name ' ' Text '(' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name ')' Operator ' ' Text ':=' Operator '\n' Text 'if' Keyword ' ' Text 'h' Name ' ' Text ':' Operator ' ' Text '∃' Name.Builtin.Pseudo "c'" Name ',' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ' ' Text '∧' Name.Builtin.Pseudo ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text "c'" Name ' ' Text 'then' Keyword ' ' Text 'some' Name ' ' Text 'h' Name ' ' Text 'else' Keyword ' ' Text 'c' Name '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'succ_spec' Name ' ' Text '{' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name '}' Operator ' ' Text '(' Operator 'h' Name ' ' Text ':' Operator ' ' Text '∃' Name.Builtin.Pseudo "c'" Name ',' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ' ' Text '∧' Name.Builtin.Pseudo ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text "c'" Name ')' Operator ' ' Text ':' Operator '\n ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text '(' Operator 'succ_chain' Name ' ' Text 'c' Name ')' Operator ' ' Text ':=' Operator '\n' Text 'let' Keyword ' ' Text '⟨' Operator "c'" Name ',' Operator ' ' Text "hc'" Name '⟩' Operator ' ' Text ':=' Operator ' ' Text 'h' Name ' ' Text 'in' Keyword '\n' Text 'have' Keyword ' ' Text 'chain' Name ' ' Text 'c' Name ' ' Text '∧' Name.Builtin.Pseudo ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text '(' Operator 'some' Name ' ' Text 'h' Name ')' Operator ',' Operator '\n ' Text 'from' Keyword ' ' Text '@' Name.Builtin.Pseudo 'some_spec' Name ' ' Text '_' Name ' ' Text '(' Operator 'λ' Name.Builtin.Pseudo "c'" Name ',' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ' ' Text '∧' Name.Builtin.Pseudo ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text "c'" Name ')' Operator ' ' Text '_' Name ',' Operator '\n' Text 'by' Keyword.Declaration ' ' Text 'simp' Name ' ' Text '[' Operator 'succ_chain' Name ',' Operator ' ' Text 'dif_pos' Name ',' Operator ' ' Text 'h' Name ',' Operator ' ' Text 'this.right' Name ']' Operator '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'chain_succ' Name ' ' Text '{' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name '}' Operator ' ' Text '(' Operator 'hc' Name ' ' Text ':' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ')' Operator ' ' Text ':' Operator ' ' Text 'chain' Name ' ' Text '(' Operator 'succ_chain' Name ' ' Text 'c' Name ')' Operator ' ' Text ':=' Operator '\n' Text 'if' Keyword ' ' Text 'h' Name ' ' Text ':' Operator ' ' Text '∃' Name.Builtin.Pseudo "c'" Name ',' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ' ' Text '∧' Name.Builtin.Pseudo ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text "c'" Name ' ' Text 'then' Keyword '\n ' Text '(' Operator 'succ_spec' Name ' ' Text 'h' Name ')' Operator '.' Name.Builtin.Pseudo 'left' Name '\n' Text 'else' Keyword '\n ' Text 'by' Keyword.Declaration ' ' Text 'simp' Name ' ' Text '[' Operator 'succ_chain' Name ',' Operator ' ' Text 'dif_neg' Name ',' Operator ' ' Text 'h' Name ']' Operator ';' Name.Builtin.Pseudo ' ' Text 'exact' Name ' ' Text 'hc' Name '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'super_of_not_max' Name ' ' Text '{' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name '}' Operator ' ' Text '(' Operator 'hc₁' Name ' ' Text ':' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ')' Operator ' ' Text '(' Operator 'hc₂' Name ' ' Text ':' Operator ' ' Text '¬' Name.Builtin.Pseudo ' ' Text 'is_max_chain' Name ' ' Text 'c' Name ')' Operator ' ' Text ':' Operator '\n ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text '(' Operator 'succ_chain' Name ' ' Text 'c' Name ')' Operator ' ' Text ':=' Operator '\n' Text 'begin' Keyword.Declaration '\n ' Text 'simp' Name ' ' Text '[' Operator 'is_max_chain' Name ',' Operator ' ' Text 'not_and_iff' Name ',' Operator ' ' Text 'not_not_iff' Name ']' Operator ' ' Text 'at' Name ' ' Text 'hc₂' Name ',' Operator '\n ' Text 'exact' Name ' ' Text 'have' Keyword ' ' Text '∃' Name.Builtin.Pseudo "c'" Name ',' Operator ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text "c'" Name ',' Operator ' ' Text 'from' Keyword ' ' Text 'hc₂.neg_resolve_left' Name ' ' Text 'hc₁' Name ',' Operator '\n ' Text 'let' Keyword ' ' Text '⟨' Operator "c'" Name ',' Operator ' ' Text "hc'" Name '⟩' Operator ' ' Text ':=' Operator ' ' Text 'this' Name ' ' Text 'in' Keyword '\n ' Text 'show' Keyword ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text '(' Operator 'succ_chain' Name ' ' Text 'c' Name ')' Operator ',' Operator '\n ' Text 'from' Keyword ' ' Text 'succ_spec' Name ' ' Text '⟨' Operator "c'" Name ',' Operator ' ' Text 'hc₁' Name ',' Operator ' ' Text "hc'" Name '⟩' Operator '\n' Text 'end' Keyword.Declaration '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'succ_increasing' Name ' ' Text '{' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name '}' Operator ' ' Text ':' Operator ' ' Text 'c' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'succ_chain' Name ' ' Text 'c' Name ' ' Text ':=' Operator '\n' Text 'if' Keyword ' ' Text 'h' Name ' ' Text ':' Operator ' ' Text '∃' Name.Builtin.Pseudo "c'" Name ',' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ' ' Text '∧' Name.Builtin.Pseudo ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text "c'" Name ' ' Text 'then' Keyword '\n ' Text 'have' Keyword ' ' Text 'super_chain' Name ' ' Text 'c' Name ' ' Text '(' Operator 'succ_chain' Name ' ' Text 'c' Name ')' Operator ',' Operator ' ' Text 'from' Keyword ' ' Text 'succ_spec' Name ' ' Text 'h' Name ',' Operator '\n ' Text 'this.right.left' Name '\n' Text 'else' Keyword ' ' Text 'by' Keyword.Declaration ' ' Text 'simp' Name ' ' Text '[' Operator 'succ_chain' Name ',' Operator ' ' Text 'dif_neg' Name ',' Operator ' ' Text 'h' Name ',' Operator ' ' Text 'subset.refl' Name ']' Operator '\n\n' Text 'inductive' Keyword.Declaration ' ' Text 'chain_closure' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'Prop' Keyword.Type '\n' Text '|' Name.Builtin.Pseudo ' ' Text 'succ' Name ' ' Text ':' Operator ' ' Text '∀' Name.Builtin.Pseudo '{' Operator 's' Name '}' Operator ',' Operator ' ' Text 'chain_closure' Name ' ' Text 's' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ' ' Text '(' Operator 'succ_chain' Name ' ' Text 's' Name ')' Operator '\n' Text '|' Name.Builtin.Pseudo ' ' Text 'union' Name ' ' Text ':' Operator ' ' Text '∀' Name.Builtin.Pseudo '{' Operator 's' Name '}' Operator ',' Operator ' ' Text '(' Operator '∀' Name.Builtin.Pseudo 'a' Name '∈' Name.Builtin.Pseudo 's' Name ',' Operator ' ' Text 'chain_closure' Name ' ' Text 'a' Name ')' Operator ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 's' Name ')' Operator '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'chain_closure_empty' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text '∅' Name.Builtin.Pseudo ' ' Text ':=' Operator '\n' Text 'have' Keyword ' ' Text 'chain_closure' Name ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text '∅' Name.Builtin.Pseudo ')' Operator ',' Operator '\n ' Text 'from' Keyword ' ' Text 'chain_closure.union' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'assume' Keyword ' ' Text 'a' Name ' ' Text 'h' Name ',' Operator ' ' Text 'h.rec' Name ' ' Text '_' Name ',' Operator '\n' Text 'by' Keyword.Declaration ' ' Text 'simp' Name ' ' Text 'at' Name ' ' Text 'this' Name ';' Name.Builtin.Pseudo ' ' Text 'assumption' Name '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'chain_closure_closure' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ')' Operator ' ' Text ':=' Operator '\n' Text 'chain_closure.union' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'assume' Keyword ' ' Text 's' Name ' ' Text 'hs' Name ',' Operator ' ' Text 'hs' Name '\n\n' Text 'variables' Keyword.Declaration ' ' Text '{' Operator 'c' Name ' ' Text 'c₁' Name ' ' Text 'c₂' Name ' ' Text 'c₃' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name '}' Operator '\n\n' Text 'private' Keyword.Namespace ' ' Text 'lemma' Keyword.Declaration ' ' Text 'chain_closure_succ_total_aux' Name ' ' Text '(' Operator 'hc₁' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c₁' Name ')' Operator ' ' Text '(' Operator 'hc₂' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c₂' Name ')' Operator '\n ' Text '(' Operator 'h' Name ' ' Text ':' Operator ' ' Text '∀' Name.Builtin.Pseudo '{' Operator 'c₃' Name '}' Operator ',' Operator ' ' Text 'chain_closure' Name ' ' Text 'c₃' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'c₃' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₂' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'c₂' Name ' ' Text '=' Name.Builtin.Pseudo ' ' Text 'c₃' Name ' ' Text '∨' Name.Builtin.Pseudo ' ' Text 'succ_chain' Name ' ' Text 'c₃' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₂' Name ')' Operator ' ' Text ':' Operator '\n ' Text 'c₁' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₂' Name ' ' Text '∨' Name.Builtin.Pseudo ' ' Text 'succ_chain' Name ' ' Text 'c₂' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₁' Name ' ' Text ':=' Operator '\n' Text 'begin' Keyword.Declaration '\n ' Text 'induction' Name ' ' Text 'hc₁' Name ',' Operator '\n ' Text 'case' Name ' ' Text '_root_.zorn.chain_closure.succ' Name ' ' Text 'c₃' Name ' ' Text 'hc₃' Name ' ' Text 'ih' Name ' ' Text '{' Operator '\n ' Text 'cases' Name ' ' Text 'ih' Name ' ' Text 'with' Keyword ' ' Text 'ih' Name ' ' Text 'ih' Name ',' Operator '\n ' Text '{' Operator ' ' Text 'have' Keyword ' ' Text 'h' Name ' ' Text ':=' Operator ' ' Text 'h' Name ' ' Text 'hc₃' Name ' ' Text 'ih' Name ',' Operator '\n ' Text 'cases' Name ' ' Text 'h' Name ' ' Text 'with' Keyword ' ' Text 'h' Name ' ' Text 'h' Name ',' Operator '\n ' Text '{' Operator ' ' Text 'exact' Name ' ' Text 'or.inr' Name ' ' Text '(' Operator 'h' Name ' ' Text '▸' Name.Builtin.Pseudo ' ' Text 'subset.refl' Name ' ' Text '_' Name ')' Operator ' ' Text '}' Operator ',' Operator '\n ' Text '{' Operator ' ' Text 'exact' Name ' ' Text 'or.inl' Name ' ' Text 'h' Name ' ' Text '}' Operator ' ' Text '}' Operator ',' Operator '\n ' Text '{' Operator ' ' Text 'exact' Name ' ' Text 'or.inr' Name ' ' Text '(' Operator 'subset.trans' Name ' ' Text 'ih' Name ' ' Text 'succ_increasing' Name ')' Operator ' ' Text '}' Operator ' ' Text '}' Operator ',' Operator '\n ' Text 'case' Name ' ' Text '_root_.zorn.chain_closure.union' Name ' ' Text 's' Name ' ' Text 'hs' Name ' ' Text 'ih' Name ' ' Text '{' Operator '\n ' Text 'refine' Name ' ' Text '(' Operator "or_of_not_implies'" Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'λ' Name.Builtin.Pseudo ' ' Text 'hn' Name ',' Operator ' ' Text 'sUnion_subset' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'λ' Name.Builtin.Pseudo ' ' Text 'a' Name ' ' Text 'ha' Name ',' Operator ' ' Text '_' Name ')' Operator ',' Operator '\n ' Text 'apply' Name ' ' Text '(' Operator 'ih' Name ' ' Text 'a' Name ' ' Text 'ha' Name ')' Operator '.' Name.Builtin.Pseudo 'resolve_right' Name ',' Operator '\n ' Text 'apply' Name ' ' Text 'mt' Name ' ' Text '(' Operator 'λ' Name.Builtin.Pseudo ' ' Text 'h' Name ',' Operator ' ' Text '_' Name ')' Operator ' ' Text 'hn' Name ',' Operator '\n ' Text 'exact' Name ' ' Text 'subset.trans' Name ' ' Text 'h' Name ' ' Text '(' Operator 'subset_sUnion_of_mem' Name ' ' Text 'ha' Name ')' Operator ' ' Text '}' Operator '\n' Text 'end' Keyword.Declaration '\n\n' Text 'private' Keyword.Namespace ' ' Text 'lemma' Keyword.Declaration ' ' Text 'chain_closure_succ_total' Name ' ' Text '(' Operator 'hc₁' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c₁' Name ')' Operator ' ' Text '(' Operator 'hc₂' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c₂' Name ')' Operator ' ' Text '(' Operator 'h' Name ' ' Text ':' Operator ' ' Text 'c₁' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₂' Name ')' Operator ' ' Text ':' Operator '\n ' Text 'c₂' Name ' ' Text '=' Name.Builtin.Pseudo ' ' Text 'c₁' Name ' ' Text '∨' Name.Builtin.Pseudo ' ' Text 'succ_chain' Name ' ' Text 'c₁' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₂' Name ' ' Text ':=' Operator '\n' Text 'begin' Keyword.Declaration '\n ' Text 'induction' Name ' ' Text 'hc₂' Name ' ' Text 'generalizing' Name ' ' Text 'c₁' Name ' ' Text 'hc₁' Name ' ' Text 'h' Name ',' Operator '\n ' Text 'case' Name ' ' Text '_root_.zorn.chain_closure.succ' Name ' ' Text 'c₂' Name ' ' Text 'hc₂' Name ' ' Text 'ih' Name ' ' Text '{' Operator '\n ' Text 'have' Keyword ' ' Text 'h₁' Name ' ' Text ':' Operator ' ' Text 'c₁' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₂' Name ' ' Text '∨' Name.Builtin.Pseudo ' ' Text '@' Name.Builtin.Pseudo 'succ_chain' Name ' ' Text 'α' Name ' ' Text 'r' Name ' ' Text 'c₂' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₁' Name ' ' Text ':=' Operator '\n ' Text '(' Operator 'chain_closure_succ_total_aux' Name ' ' Text 'hc₁' Name ' ' Text 'hc₂' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'assume' Keyword ' ' Text 'c₁' Name ',' Operator ' ' Text 'ih' Name ')' Operator ',' Operator '\n ' Text 'cases' Name ' ' Text 'h₁' Name ' ' Text 'with' Keyword ' ' Text 'h₁' Name ' ' Text 'h₁' Name ',' Operator '\n ' Text '{' Operator ' ' Text 'have' Keyword ' ' Text 'h₂' Name ' ' Text ':=' Operator ' ' Text 'ih' Name ' ' Text 'hc₁' Name ' ' Text 'h₁' Name ',' Operator '\n ' Text 'cases' Name ' ' Text 'h₂' Name ' ' Text 'with' Keyword ' ' Text 'h₂' Name ' ' Text 'h₂' Name ',' Operator '\n ' Text '{' Operator ' ' Text 'exact' Name ' ' Text '(' Operator 'or.inr' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'h₂' Name ' ' Text '▸' Name.Builtin.Pseudo ' ' Text 'subset.refl' Name ' ' Text '_' Name ')' Operator ' ' Text '}' Operator ',' Operator '\n ' Text '{' Operator ' ' Text 'exact' Name ' ' Text '(' Operator 'or.inr' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'subset.trans' Name ' ' Text 'h₂' Name ' ' Text 'succ_increasing' Name ')' Operator ' ' Text '}' Operator ' ' Text '}' Operator ',' Operator '\n ' Text '{' Operator ' ' Text 'exact' Name ' ' Text '(' Operator 'or.inl' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'subset.antisymm' Name ' ' Text 'h₁' Name ' ' Text 'h' Name ')' Operator ' ' Text '}' Operator ' ' Text '}' Operator ',' Operator '\n ' Text 'case' Name ' ' Text '_root_.zorn.chain_closure.union' Name ' ' Text 's' Name ' ' Text 'hs' Name ' ' Text 'ih' Name ' ' Text '{' Operator '\n ' Text 'apply' Name ' ' Text 'or.imp' Name ' ' Text '(' Operator 'assume' Keyword ' ' Text "h'" Name ',' Operator ' ' Text 'subset.antisymm' Name ' ' Text "h'" Name ' ' Text 'h' Name ')' Operator ' ' Text 'id' Name ',' Operator '\n ' Text 'apply' Name ' ' Text 'classical.by_contradiction' Name ',' Operator '\n ' Text 'simp' Name ' ' Text '[' Operator 'not_or_iff' Name ',' Operator ' ' Text 'sUnion_subset_iff' Name ',' Operator ' ' Text 'classical.not_forall_iff' Name ',' Operator ' ' Text 'not_implies_iff' Name ']' Operator ',' Operator '\n ' Text 'intro' Name ' ' Text 'h' Name ',' Operator ' ' Text 'cases' Name ' ' Text 'h' Name ' ' Text 'with' Keyword ' ' Text 'h₁' Name ' ' Text 'h₂' Name ',' Operator ' ' Text 'cases' Name ' ' Text 'h₂' Name ' ' Text 'with' Keyword ' ' Text 'c₃' Name ' ' Text 'h₂' Name ',' Operator ' ' Text 'cases' Name ' ' Text 'h₂' Name ' ' Text 'with' Keyword ' ' Text 'h₂' Name ' ' Text 'hc₃' Name ',' Operator '\n ' Text 'have' Keyword ' ' Text 'h' Name ' ' Text ':=' Operator ' ' Text 'chain_closure_succ_total_aux' Name ' ' Text 'hc₁' Name ' ' Text '(' Operator 'hs' Name ' ' Text 'c₃' Name ' ' Text 'hc₃' Name ')' Operator ' ' Text '(' Operator 'assume' Keyword ' ' Text 'c₄' Name ',' Operator ' ' Text 'ih' Name ' ' Text '_' Name ' ' Text 'hc₃' Name ')' Operator ',' Operator '\n ' Text 'cases' Name ' ' Text 'h' Name ' ' Text 'with' Keyword ' ' Text 'h' Name ' ' Text 'h' Name ',' Operator '\n ' Text '{' Operator ' ' Text 'have' Keyword ' ' Text "h'" Name ' ' Text ':=' Operator ' ' Text 'ih' Name ' ' Text 'c₃' Name ' ' Text 'hc₃' Name ' ' Text 'hc₁' Name ' ' Text 'h' Name ',' Operator '\n ' Text 'cases' Name ' ' Text "h'" Name ' ' Text 'with' Keyword ' ' Text "h'" Name ' ' Text "h'" Name ',' Operator '\n ' Text '{' Operator ' ' Text 'exact' Name ' ' Text '(' Operator 'h₂' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text "h'" Name ' ' Text '▸' Name.Builtin.Pseudo ' ' Text 'subset.refl' Name ' ' Text '_' Name ')' Operator ' ' Text '}' Operator ',' Operator '\n ' Text '{' Operator ' ' Text 'exact' Name ' ' Text '(' Operator 'h₁' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'subset.trans' Name ' ' Text "h'" Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'subset_sUnion_of_mem' Name ' ' Text 'hc₃' Name ')' Operator ' ' Text '}' Operator ' ' Text '}' Operator ',' Operator '\n ' Text '{' Operator ' ' Text 'exact' Name ' ' Text '(' Operator 'h₂' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'subset.trans' Name ' ' Text 'succ_increasing' Name ' ' Text 'h' Name ')' Operator ' ' Text '}' Operator ' ' Text '}' Operator '\n' Text 'end' Keyword.Declaration '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'chain_closure_total' Name ' ' Text '(' Operator 'hc₁' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c₁' Name ')' Operator ' ' Text '(' Operator 'hc₂' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c₂' Name ')' Operator ' ' Text ':' Operator ' ' Text 'c₁' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₂' Name ' ' Text '∨' Name.Builtin.Pseudo ' ' Text 'c₂' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₁' Name ' ' Text ':=' Operator '\n' Text 'have' Keyword ' ' Text 'c₁' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₂' Name ' ' Text '∨' Name.Builtin.Pseudo ' ' Text 'succ_chain' Name ' ' Text 'c₂' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₁' Name ',' Operator '\n ' Text 'from' Keyword ' ' Text 'chain_closure_succ_total_aux' Name ' ' Text 'hc₁' Name ' ' Text 'hc₂' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'assume' Keyword ' ' Text 'c₃' Name ' ' Text 'hc₃' Name ',' Operator ' ' Text 'chain_closure_succ_total' Name ' ' Text 'hc₃' Name ' ' Text 'hc₂' Name ',' Operator '\n' Text 'or.imp_right' Name ' ' Text '(' Operator 'assume' Keyword ' ' Text ':' Operator ' ' Text 'succ_chain' Name ' ' Text 'c₂' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₁' Name ',' Operator ' ' Text 'subset.trans' Name ' ' Text 'succ_increasing' Name ' ' Text 'this' Name ')' Operator ' ' Text 'this' Name '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'chain_closure_succ_fixpoint' Name ' ' Text '(' Operator 'hc₁' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c₁' Name ')' Operator ' ' Text '(' Operator 'hc₂' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c₂' Name ')' Operator '\n ' Text '(' Operator 'h_eq' Name ' ' Text ':' Operator ' ' Text 'succ_chain' Name ' ' Text 'c₂' Name ' ' Text '=' Name.Builtin.Pseudo ' ' Text 'c₂' Name ')' Operator ' ' Text ':' Operator ' ' Text 'c₁' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 'c₂' Name ' ' Text ':=' Operator '\n' Text 'begin' Keyword.Declaration '\n ' Text 'induction' Name ' ' Text 'hc₁' Name ',' Operator '\n ' Text 'case' Name ' ' Text '_root_.zorn.chain_closure.succ' Name ' ' Text 'c₁' Name ' ' Text 'hc₁' Name ' ' Text 'h' Name ' ' Text '{' Operator '\n ' Text 'exact' Name ' ' Text 'or.elim' Name ' ' Text '(' Operator 'chain_closure_succ_total' Name ' ' Text 'hc₁' Name ' ' Text 'hc₂' Name ' ' Text 'h' Name ')' Operator '\n ' Text '(' Operator 'assume' Keyword ' ' Text 'h' Name ',' Operator ' ' Text 'h' Name ' ' Text '▸' Name.Builtin.Pseudo ' ' Text 'h_eq.symm' Name ' ' Text '▸' Name.Builtin.Pseudo ' ' Text 'subset.refl' Name ' ' Text 'c₂' Name ')' Operator ' ' Text 'id' Name ' ' Text '}' Operator ',' Operator '\n ' Text 'case' Name ' ' Text '_root_.zorn.chain_closure.union' Name ' ' Text 's' Name ' ' Text 'hs' Name ' ' Text 'ih' Name ' ' Text '{' Operator '\n ' Text 'exact' Name ' ' Text '(' Operator 'sUnion_subset' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'assume' Keyword ' ' Text 'c₁' Name ' ' Text 'hc₁' Name ',' Operator ' ' Text 'ih' Name ' ' Text 'c₁' Name ' ' Text 'hc₁' Name ')' Operator ' ' Text '}' Operator '\n' Text 'end' Keyword.Declaration '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'chain_closure_succ_fixpoint_iff' Name ' ' Text '(' Operator 'hc' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c' Name ')' Operator ' ' Text ':' Operator '\n ' Text 'succ_chain' Name ' ' Text 'c' Name ' ' Text '=' Name.Builtin.Pseudo ' ' Text 'c' Name ' ' Text '↔' Name.Builtin.Pseudo ' ' Text 'c' Name ' ' Text '=' Name.Builtin.Pseudo ' ' Text '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ' ' Text ':=' Operator '\n' Text '⟨' Operator 'assume' Keyword ' ' Text 'h' Name ',' Operator ' ' Text 'subset.antisymm' Name '\n ' Text '(' Operator 'subset_sUnion_of_mem' Name ' ' Text 'hc' Name ')' Operator '\n ' Text '(' Operator 'chain_closure_succ_fixpoint' Name ' ' Text 'chain_closure_closure' Name ' ' Text 'hc' Name ' ' Text 'h' Name ')' Operator ',' Operator '\n ' Text 'assume' Keyword ' ' Text ':' Operator ' ' Text 'c' Name ' ' Text '=' Name.Builtin.Pseudo ' ' Text '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo '{' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name ' ' Text '|' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ' ' Text 'c' Name '}' Operator ',' Operator '\n ' Text 'subset.antisymm' Name '\n ' Text '(' Operator 'calc' Keyword ' ' Text 'succ_chain' Name ' ' Text 'c' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo '{' Operator 'c' Name ' ' Text ':' Operator ' ' Text 'set' Name ' ' Text 'α' Name ' ' Text '|' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ' ' Text 'c' Name '}' Operator ' ' Text ':' Operator '\n ' Text 'subset_sUnion_of_mem' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'chain_closure.succ' Name ' ' Text 'hc' Name '\n ' Text '.' Name.Builtin.Pseudo '.' Name.Builtin.Pseudo '.' Name.Builtin.Pseudo ' ' Text '=' Name.Builtin.Pseudo ' ' Text 'c' Name ' ' Text ':' Operator ' ' Text 'this.symm' Name ')' Operator '\n ' Text 'succ_increasing' Name '⟩' Operator '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'chain_chain_closure' Name ' ' Text '(' Operator 'hc' Name ' ' Text ':' Operator ' ' Text 'chain_closure' Name ' ' Text 'c' Name ')' Operator ' ' Text ':' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ' ' Text ':=' Operator '\n' Text 'begin' Keyword.Declaration '\n ' Text 'induction' Name ' ' Text 'hc' Name ',' Operator '\n ' Text 'case' Name ' ' Text '_root_.zorn.chain_closure.succ' Name ' ' Text 'c' Name ' ' Text 'hc' Name ' ' Text 'h' Name ' ' Text '{' Operator '\n ' Text 'exact' Name ' ' Text 'chain_succ' Name ' ' Text 'h' Name ' ' Text '}' Operator ',' Operator '\n ' Text 'case' Name ' ' Text '_root_.zorn.chain_closure.union' Name ' ' Text 's' Name ' ' Text 'hs' Name ' ' Text 'h' Name ' ' Text '{' Operator '\n ' Text 'have' Keyword ' ' Text 'h' Name ' ' Text ':' Operator ' ' Text '∀' Name.Builtin.Pseudo 'c' Name '∈' Name.Builtin.Pseudo 's' Name ',' Operator ' ' Text 'zorn.chain' Name ' ' Text 'c' Name ' ' Text ':=' Operator ' ' Text 'h' Name ',' Operator '\n ' Text 'exact' Name ' ' Text 'assume' Keyword ' ' Text 'c₁' Name ' ' Text '⟨' Operator 't₁' Name ',' Operator ' ' Text 'ht₁' Name ',' Operator ' ' Text '(' Operator 'hc₁' Name ' ' Text ':' Operator ' ' Text 'c₁' Name ' ' Text '∈' Name.Builtin.Pseudo ' ' Text 't₁' Name ')' Operator '⟩' Operator ' ' Text 'c₂' Name ' ' Text '⟨' Operator 't₂' Name ',' Operator ' ' Text 'ht₂' Name ',' Operator ' ' Text '(' Operator 'hc₂' Name ' ' Text ':' Operator ' ' Text 'c₂' Name ' ' Text '∈' Name.Builtin.Pseudo ' ' Text 't₂' Name ')' Operator '⟩' Operator ' ' Text 'hneq' Name ',' Operator '\n ' Text 'have' Keyword ' ' Text 't₁' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 't₂' Name ' ' Text '∨' Name.Builtin.Pseudo ' ' Text 't₂' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 't₁' Name ',' Operator ' ' Text 'from' Keyword ' ' Text 'chain_closure_total' Name ' ' Text '(' Operator 'hs' Name ' ' Text '_' Name ' ' Text 'ht₁' Name ')' Operator ' ' Text '(' Operator 'hs' Name ' ' Text '_' Name ' ' Text 'ht₂' Name ')' Operator ',' Operator '\n ' Text 'or.elim' Name ' ' Text 'this' Name '\n ' Text '(' Operator 'assume' Keyword ' ' Text ':' Operator ' ' Text 't₁' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 't₂' Name ',' Operator ' ' Text 'h' Name ' ' Text 't₂' Name ' ' Text 'ht₂' Name ' ' Text 'c₁' Name ' ' Text '(' Operator 'this' Name ' ' Text 'hc₁' Name ')' Operator ' ' Text 'c₂' Name ' ' Text 'hc₂' Name ' ' Text 'hneq' Name ')' Operator '\n ' Text '(' Operator 'assume' Keyword ' ' Text ':' Operator ' ' Text 't₂' Name ' ' Text '⊆' Name.Builtin.Pseudo ' ' Text 't₁' Name ',' Operator ' ' Text 'h' Name ' ' Text 't₁' Name ' ' Text 'ht₁' Name ' ' Text 'c₁' Name ' ' Text 'hc₁' Name ' ' Text 'c₂' Name ' ' Text '(' Operator 'this' Name ' ' Text 'hc₂' Name ')' Operator ' ' Text 'hneq' Name ')' Operator ' ' Text '}' Operator '\n' Text 'end' Keyword.Declaration '\n\n' Text 'def' Keyword.Declaration ' ' Text 'max_chain' Name ' ' Text ':=' Operator ' ' Text '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name '\n\n' Text '/--' Literal.String.Doc ' ' Literal.String.Doc 'H' Literal.String.Doc 'a' Literal.String.Doc 'u' Literal.String.Doc 's' Literal.String.Doc 'd' Literal.String.Doc 'o' Literal.String.Doc 'r' Literal.String.Doc 'f' Literal.String.Doc 'f' Literal.String.Doc "'" Literal.String.Doc 's' Literal.String.Doc ' ' Literal.String.Doc 'm' Literal.String.Doc 'a' Literal.String.Doc 'x' Literal.String.Doc 'i' Literal.String.Doc 'm' Literal.String.Doc 'a' Literal.String.Doc 'l' Literal.String.Doc 'i' Literal.String.Doc 't' Literal.String.Doc 'y' Literal.String.Doc ' ' Literal.String.Doc 'p' Literal.String.Doc 'r' Literal.String.Doc 'i' Literal.String.Doc 'n' Literal.String.Doc 'c' Literal.String.Doc 'i' Literal.String.Doc 'p' Literal.String.Doc 'l' Literal.String.Doc 'e' Literal.String.Doc '\n' Literal.String.Doc '\n' Literal.String.Doc 'T' Literal.String.Doc 'h' Literal.String.Doc 'e' Literal.String.Doc 'r' Literal.String.Doc 'e' Literal.String.Doc ' ' Literal.String.Doc 'e' Literal.String.Doc 'x' Literal.String.Doc 'i' Literal.String.Doc 's' Literal.String.Doc 't' Literal.String.Doc 's' Literal.String.Doc ' ' Literal.String.Doc 'a' Literal.String.Doc ' ' Literal.String.Doc 'm' Literal.String.Doc 'a' Literal.String.Doc 'x' Literal.String.Doc 'i' Literal.String.Doc 'm' Literal.String.Doc 'a' Literal.String.Doc 'l' Literal.String.Doc ' ' Literal.String.Doc 't' Literal.String.Doc 'o' Literal.String.Doc 't' Literal.String.Doc 'a' Literal.String.Doc 'l' Literal.String.Doc 'l' Literal.String.Doc 'y' Literal.String.Doc ' ' Literal.String.Doc 'o' Literal.String.Doc 'r' Literal.String.Doc 'd' Literal.String.Doc 'e' Literal.String.Doc 'r' Literal.String.Doc 'e' Literal.String.Doc 'd' Literal.String.Doc ' ' Literal.String.Doc 's' Literal.String.Doc 'u' Literal.String.Doc 'b' Literal.String.Doc 's' Literal.String.Doc 'e' Literal.String.Doc 't' Literal.String.Doc ' ' Literal.String.Doc 'o' Literal.String.Doc 'f' Literal.String.Doc ' ' Literal.String.Doc '`' Literal.String.Doc 'α' Literal.String.Doc '`' Literal.String.Doc '.' Literal.String.Doc '\n' Literal.String.Doc 'N' Literal.String.Doc 'o' Literal.String.Doc 't' Literal.String.Doc 'e' Literal.String.Doc ' ' Literal.String.Doc 't' Literal.String.Doc 'h' Literal.String.Doc 'a' Literal.String.Doc 't' Literal.String.Doc ' ' Literal.String.Doc 'w' Literal.String.Doc 'e' Literal.String.Doc ' ' Literal.String.Doc 'd' Literal.String.Doc 'o' Literal.String.Doc ' ' Literal.String.Doc 'n' Literal.String.Doc 'o' Literal.String.Doc 't' Literal.String.Doc ' ' Literal.String.Doc 'r' Literal.String.Doc 'e' Literal.String.Doc 'q' Literal.String.Doc 'u' Literal.String.Doc 'i' Literal.String.Doc 'r' Literal.String.Doc 'e' Literal.String.Doc ' ' Literal.String.Doc '`' Literal.String.Doc 'α' Literal.String.Doc '`' Literal.String.Doc ' ' Literal.String.Doc 't' Literal.String.Doc 'o' Literal.String.Doc ' ' Literal.String.Doc 'b' Literal.String.Doc 'e' Literal.String.Doc ' ' Literal.String.Doc 'p' Literal.String.Doc 'a' Literal.String.Doc 'r' Literal.String.Doc 't' Literal.String.Doc 'i' Literal.String.Doc 'a' Literal.String.Doc 'l' Literal.String.Doc 'l' Literal.String.Doc 'y' Literal.String.Doc ' ' Literal.String.Doc 'o' Literal.String.Doc 'r' Literal.String.Doc 'd' Literal.String.Doc 'e' Literal.String.Doc 'r' Literal.String.Doc 'e' Literal.String.Doc 'd' Literal.String.Doc ' ' Literal.String.Doc 'b' Literal.String.Doc 'y' Literal.String.Doc ' ' Literal.String.Doc '`' Literal.String.Doc 'r' Literal.String.Doc '`' Literal.String.Doc '.' Literal.String.Doc ' ' Literal.String.Doc '-/' Literal.String.Doc '\n' Text 'theorem' Keyword.Declaration ' ' Text 'max_chain_spec' Name ' ' Text ':' Operator ' ' Text 'is_max_chain' Name ' ' Text 'max_chain' Name ' ' Text ':=' Operator '\n' Text 'classical.by_contradiction' Name ' ' Text '$' Name.Builtin.Pseudo '\n' Text 'assume' Keyword ' ' Text ':' Operator ' ' Text '¬' Name.Builtin.Pseudo ' ' Text 'is_max_chain' Name ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ')' Operator ',' Operator '\n' Text 'have' Keyword ' ' Text 'super_chain' Name ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ')' Operator ' ' Text '(' Operator 'succ_chain' Name ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ')' Operator ')' Operator ',' Operator '\n ' Text 'from' Keyword ' ' Text 'super_of_not_max' Name ' ' Text '(' Operator 'chain_chain_closure' Name ' ' Text 'chain_closure_closure' Name ')' Operator ' ' Text 'this' Name ',' Operator '\n' Text 'let' Keyword ' ' Text '⟨' Operator 'h₁' Name ',' Operator ' ' Text 'h₂' Name ',' Operator ' ' Text '(' Operator 'h₃' Name ' ' Text ':' Operator ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ')' Operator ' ' Text '≠' Name.Builtin.Pseudo ' ' Text 'succ_chain' Name ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ')' Operator ')' Operator '⟩' Operator ' ' Text ':=' Operator ' ' Text 'this' Name ' ' Text 'in' Keyword '\n' Text 'have' Keyword ' ' Text 'succ_chain' Name ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ')' Operator ' ' Text '=' Name.Builtin.Pseudo ' ' Text '(' Operator '⋃' Name.Builtin.Pseudo '₀' Name.Builtin.Pseudo ' ' Text 'chain_closure' Name ')' Operator ',' Operator '\n ' Text 'from' Keyword ' ' Text '(' Operator 'chain_closure_succ_fixpoint_iff' Name ' ' Text 'chain_closure_closure' Name ')' Operator '.' Name.Builtin.Pseudo 'mpr' Name ' ' Text 'rfl' Name ',' Operator '\n' Text 'h₃' Name ' ' Text 'this.symm' Name '\n\n' Text '/--' Literal.String.Doc ' ' Literal.String.Doc 'Z' Literal.String.Doc 'o' Literal.String.Doc 'r' Literal.String.Doc 'n' Literal.String.Doc "'" Literal.String.Doc 's' Literal.String.Doc ' ' Literal.String.Doc 'l' Literal.String.Doc 'e' Literal.String.Doc 'm' Literal.String.Doc 'm' Literal.String.Doc 'a' Literal.String.Doc '\n' Literal.String.Doc '\n' Literal.String.Doc 'I' Literal.String.Doc 'f' Literal.String.Doc ' ' Literal.String.Doc 'e' Literal.String.Doc 'v' Literal.String.Doc 'e' Literal.String.Doc 'r' Literal.String.Doc 'y' Literal.String.Doc ' ' Literal.String.Doc 'c' Literal.String.Doc 'h' Literal.String.Doc 'a' Literal.String.Doc 'i' Literal.String.Doc 'n' Literal.String.Doc ' ' Literal.String.Doc 'h' Literal.String.Doc 'a' Literal.String.Doc 's' Literal.String.Doc ' ' Literal.String.Doc 'a' Literal.String.Doc 'n' Literal.String.Doc ' ' Literal.String.Doc 'u' Literal.String.Doc 'p' Literal.String.Doc 'p' Literal.String.Doc 'e' Literal.String.Doc 'r' Literal.String.Doc ' ' Literal.String.Doc 'b' Literal.String.Doc 'o' Literal.String.Doc 'u' Literal.String.Doc 'n' Literal.String.Doc 'd' Literal.String.Doc ',' Literal.String.Doc ' ' Literal.String.Doc 't' Literal.String.Doc 'h' Literal.String.Doc 'e' Literal.String.Doc 'n' Literal.String.Doc ' ' Literal.String.Doc 't' Literal.String.Doc 'h' Literal.String.Doc 'e' Literal.String.Doc 'r' Literal.String.Doc 'e' Literal.String.Doc ' ' Literal.String.Doc 'i' Literal.String.Doc 's' Literal.String.Doc ' ' Literal.String.Doc 'a' Literal.String.Doc ' ' Literal.String.Doc 'm' Literal.String.Doc 'a' Literal.String.Doc 'x' Literal.String.Doc 'i' Literal.String.Doc 'm' Literal.String.Doc 'a' Literal.String.Doc 'l' Literal.String.Doc ' ' Literal.String.Doc 'e' Literal.String.Doc 'l' Literal.String.Doc 'e' Literal.String.Doc 'm' Literal.String.Doc 'e' Literal.String.Doc 'n' Literal.String.Doc 't' Literal.String.Doc ' ' Literal.String.Doc '-/' Literal.String.Doc '\n' Text 'theorem' Keyword.Declaration ' ' Text 'zorn' Name ' ' Text '(' Operator 'h' Name ' ' Text ':' Operator ' ' Text '∀' Name.Builtin.Pseudo 'c' Name ',' Operator ' ' Text 'chain' Name ' ' Text 'c' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text '∃' Name.Builtin.Pseudo 'ub' Name ',' Operator ' ' Text '∀' Name.Builtin.Pseudo 'a' Name '∈' Name.Builtin.Pseudo 'c' Name ',' Operator ' ' Text 'a' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'ub' Name ')' Operator ' ' Text '(' Operator 'trans' Name ' ' Text ':' Operator ' ' Text '∀' Name.Builtin.Pseudo '{' Operator 'a' Name ' ' Text 'b' Name ' ' Text 'c' Name '}' Operator ',' Operator ' ' Text 'a' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'b' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'b' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'c' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'a' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'c' Name ')' Operator ' ' Text ':' Operator '\n ' Text '∃' Name.Builtin.Pseudo 'm' Name ',' Operator ' ' Text '∀' Name.Builtin.Pseudo 'a' Name ',' Operator ' ' Text 'm' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'a' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'a' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'm' Name ' ' Text ':=' Operator '\n' Text 'have' Keyword ' ' Text '∃' Name.Builtin.Pseudo 'ub' Name ',' Operator ' ' Text '∀' Name.Builtin.Pseudo 'a' Name '∈' Name.Builtin.Pseudo 'max_chain' Name ',' Operator ' ' Text 'a' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'ub' Name ',' Operator '\n ' Text 'from' Keyword ' ' Text 'h' Name ' ' Text '_' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'max_chain_spec.left' Name ',' Operator '\n' Text 'let' Keyword ' ' Text '⟨' Operator 'ub' Name ',' Operator ' ' Text '(' Operator 'hub' Name ' ' Text ':' Operator ' ' Text '∀' Name.Builtin.Pseudo 'a' Name '∈' Name.Builtin.Pseudo 'max_chain' Name ',' Operator ' ' Text 'a' Name ' ' Text '≺' Name.Builtin.Pseudo ' ' Text 'ub' Name ')' Operator '⟩' Operator ' ' Text ':=' Operator ' ' Text 'this' Name ' ' Text 'in' Keyword '\n' Text '⟨' Operator 'ub' Name ',' Operator ' ' Text 'assume' Keyword ' ' Text 'a' Name ' ' Text 'ha' Name ',' Operator '\n ' Text 'have' Keyword ' ' Text 'chain' Name ' ' Text '(' Operator 'insert' Name ' ' Text 'a' Name ' ' Text 'max_chain' Name ')' Operator ',' Operator '\n ' Text 'from' Keyword ' ' Text 'chain_insert' Name ' ' Text 'max_chain_spec.left' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'assume' Keyword ' ' Text 'b' Name ' ' Text 'hb' Name ' ' Text '_' Name ',' Operator ' ' Text 'or.inr' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'trans' Name ' ' Text '(' Operator 'hub' Name ' ' Text 'b' Name ' ' Text 'hb' Name ')' Operator ' ' Text 'ha' Name ',' Operator '\n ' Text 'have' Keyword ' ' Text 'a' Name ' ' Text '∈' Name.Builtin.Pseudo ' ' Text 'max_chain' Name ',' Operator ' ' Text 'from' Keyword '\n ' Text 'classical.by_contradiction' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text 'assume' Keyword ' ' Text 'h' Name ' ' Text ':' Operator ' ' Text 'a' Name ' ' Text '∉' Name.Builtin.Pseudo ' ' Text 'max_chain' Name ',' Operator '\n ' Text 'max_chain_spec.right' Name ' ' Text '$' Name.Builtin.Pseudo ' ' Text '⟨' Operator 'insert' Name ' ' Text 'a' Name ' ' Text 'max_chain' Name ',' Operator ' ' Text 'this' Name ',' Operator ' ' Text 'ssubset_insert' Name ' ' Text 'h' Name '⟩' Operator ',' Operator '\n ' Text 'hub' Name ' ' Text 'a' Name ' ' Text 'this' Name '⟩' Operator '\n\n' Text 'end' Keyword.Declaration ' ' Text 'chain' Name '\n\n' Text 'theorem' Keyword.Declaration ' ' Text 'zorn_weak_order' Name ' ' Text '{' Operator 'α' Name ' ' Text ':' Operator ' ' Text 'Type' Keyword.Type ' ' Text 'u' Name '}' Operator ' ' Text '[' Operator 'weak_order' Name ' ' Text 'α' Name ']' Operator '\n ' Text '(' Operator 'h' Name ' ' Text ':' Operator ' ' Text '∀' Name.Builtin.Pseudo 'c' Name ':' Operator 'set' Name ' ' Text 'α' Name ',' Operator ' ' Text '@' Name.Builtin.Pseudo 'chain' Name ' ' Text 'α' Name ' ' Text '(' Operator '≤' Name.Builtin.Pseudo ')' Operator ' ' Text 'c' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text '∃' Name.Builtin.Pseudo 'ub' Name ',' Operator ' ' Text '∀' Name.Builtin.Pseudo 'a' Name '∈' Name.Builtin.Pseudo 'c' Name ',' Operator ' ' Text 'a' Name ' ' Text '≤' Name.Builtin.Pseudo ' ' Text 'ub' Name ')' Operator ' ' Text ':' Operator ' ' Text '∃' Name.Builtin.Pseudo 'm' Name ':' Operator 'α' Name ',' Operator ' ' Text '∀' Name.Builtin.Pseudo 'a' Name ',' Operator ' ' Text 'm' Name ' ' Text '≤' Name.Builtin.Pseudo ' ' Text 'a' Name ' ' Text '→' Name.Builtin.Pseudo ' ' Text 'a' Name ' ' Text '=' Name.Builtin.Pseudo ' ' Text 'm' Name ' ' Text ':=' Operator '\n' Text 'let' Keyword ' ' Text '⟨' Operator 'm' Name ',' Operator ' ' Text 'hm' Name '⟩' Operator ' ' Text ':=' Operator ' ' Text '@' Name.Builtin.Pseudo 'zorn' Name ' ' Text 'α' Name ' ' Text '(' Operator '≤' Name.Builtin.Pseudo ')' Operator ' ' Text 'h' Name ' ' Text '(' Operator 'assume' Keyword ' ' Text 'a' Name ' ' Text 'b' Name ' ' Text 'c' Name ',' Operator ' ' Text 'le_trans' Name ')' Operator ' ' Text 'in' Keyword '\n' Text '⟨' Operator 'm' Name ',' Operator ' ' Text 'assume' Keyword ' ' Text 'a' Name ' ' Text 'ha' Name ',' Operator ' ' Text 'le_antisymm' Name ' ' Text '(' Operator 'hm' Name ' ' Text 'a' Name ' ' Text 'ha' Name ')' Operator ' ' Text 'ha' Name '⟩' Operator '\n\n' Text 'end' Keyword.Declaration ' ' Text 'zorn' Name '\n\n' Text '-- other bits of tricky syntax' Comment.Single '\n' Text '@[' Keyword.Declaration 'to_additive' Name ' ' Text '"' Literal.String.Double 'See note [foo]' Literal.String.Double '"' Literal.String.Double ']' Keyword.Declaration '\n' Text 'lemma' Keyword.Declaration ' ' Text 'mul_one' Name ' ' Text ':' Operator ' ' Text 'sorry' Generic.Error ' ' Text ':=' Operator ' ' Text 'sorry' Generic.Error '\n' Text