[Elab.info] command @ ⟨13, 0⟩-⟨15, 6⟩ Nat : Type @ ⟨13, 11⟩-⟨13, 14⟩ Nat : Type @ ⟨13, 11⟩-⟨13, 14⟩ x : Nat @ ⟨13, 7⟩-⟨13, 8⟩ Nat × Nat : Type @ ⟨13, 18⟩-⟨13, 27⟩ Macro expansion Nat × Nat ===> Prod✝ Nat Nat Prod : Type → Type → Type @ ⟨13, 18⟩†-⟨13, 22⟩† Nat : Type @ ⟨13, 18⟩-⟨13, 21⟩ Nat : Type @ ⟨13, 18⟩-⟨13, 21⟩ Nat : Type @ ⟨13, 24⟩-⟨13, 27⟩ Nat : Type @ ⟨13, 24⟩-⟨13, 27⟩ let y : Nat × Nat := (x, x); id y : Nat × Nat @ ⟨14, 2⟩-⟨15, 6⟩ Nat × Nat : Type @ ⟨14, 6⟩-⟨14, 7⟩ (x, x) : Nat × Nat @ ⟨14, 11⟩-⟨14, 17⟩ Macro expansion ⟨x, x⟩ ===> Prod.mk✝ x x (x, x) : Nat × Nat @ ⟨14, 11⟩†-⟨14, 16⟩ Prod.mk : {α β : Type} → α → β → α × β @ ⟨14, 11⟩†-⟨17, 8⟩† x : Nat @ ⟨14, 12⟩-⟨14, 13⟩ x : Nat @ ⟨14, 12⟩-⟨14, 13⟩ x : Nat @ ⟨14, 15⟩-⟨14, 16⟩ x : Nat @ ⟨14, 15⟩-⟨14, 16⟩ y : Nat × Nat @ ⟨14, 6⟩-⟨14, 7⟩ id y : Nat × Nat @ ⟨15, 2⟩-⟨15, 6⟩ id : {α : Type} → α → α @ ⟨15, 2⟩-⟨15, 4⟩ y : Nat × Nat @ ⟨15, 5⟩-⟨15, 6⟩ y : Nat × Nat @ ⟨15, 5⟩-⟨15, 6⟩ [Elab.info] command @ ⟨17, 0⟩-⟨19, 8⟩ ∀ (x y : Nat), Bool → x + 0 = x : Prop @ ⟨17, 8⟩-⟨17, 44⟩ Nat : Type @ ⟨17, 15⟩-⟨17, 18⟩ Nat : Type @ ⟨17, 15⟩-⟨17, 18⟩ x : Nat @ ⟨17, 9⟩-⟨17, 10⟩ Nat : Type @ ⟨17, 15⟩-⟨17, 18⟩ Nat : Type @ ⟨17, 15⟩-⟨17, 18⟩ y : Nat @ ⟨17, 11⟩-⟨17, 12⟩ Bool → x + 0 = x : Prop @ ⟨17, 22⟩-⟨17, 44⟩ Bool : Type @ ⟨17, 27⟩-⟨17, 31⟩ Bool : Type @ ⟨17, 27⟩-⟨17, 31⟩ b : Bool @ ⟨17, 23⟩-⟨17, 24⟩ x + 0 = x : Prop @ ⟨17, 35⟩-⟨17, 44⟩ Macro expansion x + 0 = x ===> binrel% Eq✝ (x + 0)x x + 0 : Nat @ ⟨17, 35⟩-⟨17, 40⟩ Macro expansion x + 0 ===> HAdd.hAdd✝ x 0 HAdd.hAdd : {α β γ : Type} → [self : HAdd α β γ] → α → β → γ @ ⟨17, 35⟩†-⟨17, 44⟩† x : Nat @ ⟨17, 35⟩-⟨17, 36⟩ x : Nat @ ⟨17, 35⟩-⟨17, 36⟩ 0 : Nat @ ⟨17, 39⟩-⟨17, 40⟩ x : Nat @ ⟨17, 43⟩-⟨17, 44⟩ x : Nat @ ⟨17, 43⟩-⟨17, 44⟩ fun (x y : Nat) (b : Bool) => ofEqTrue (Eq.trans (congrFun (congrArg Eq (Nat.add_zero x)) x) (eqSelf x)) : ∀ (x y : Nat), Bool → x + 0 = x @ ⟨18, 2⟩-⟨19, 8⟩ Nat : Type @ ⟨18, 6⟩-⟨18, 7⟩ x : Nat @ ⟨18, 6⟩-⟨18, 7⟩ Nat : Type @ ⟨18, 8⟩-⟨18, 9⟩ y : Nat @ ⟨18, 8⟩-⟨18, 9⟩ Bool : Type @ ⟨18, 10⟩-⟨18, 11⟩ b : Bool @ ⟨18, 10⟩-⟨18, 11⟩ Tactic @ ⟨19, 4⟩-⟨19, 8⟩ before x y : Nat b : Bool ⊢ x + 0 = x after no goals Tactic @ ⟨19, 4⟩-⟨19, 8⟩ before x y : Nat b : Bool ⊢ x + 0 = x after no goals Tactic @ ⟨19, 4⟩-⟨19, 8⟩ before x y : Nat b : Bool ⊢ x + 0 = x after no goals [Elab.info] command @ ⟨21, 0⟩-⟨25, 10⟩ Nat → Nat → Bool → Nat : Type @ ⟨21, 9⟩-⟨21, 39⟩ Nat : Type @ ⟨21, 16⟩-⟨21, 19⟩ Nat : Type @ ⟨21, 16⟩-⟨21, 19⟩ x : Nat @ ⟨21, 10⟩-⟨21, 11⟩ Nat : Type @ ⟨21, 16⟩-⟨21, 19⟩ Nat : Type @ ⟨21, 16⟩-⟨21, 19⟩ y : Nat @ ⟨21, 12⟩-⟨21, 13⟩ Bool → Nat : Type @ ⟨21, 23⟩-⟨21, 39⟩ Bool : Type @ ⟨21, 28⟩-⟨21, 32⟩ Bool : Type @ ⟨21, 28⟩-⟨21, 32⟩ b : Bool @ ⟨21, 24⟩-⟨21, 25⟩ Nat : Type @ ⟨21, 36⟩-⟨21, 39⟩ Nat : Type @ ⟨21, 36⟩-⟨21, 39⟩ fun (x y : Nat) (b : Bool) => let x : Nat × Nat := (x + y, x - y); match x with | (z, w) => let z1 : Nat := z + w; z + z1 : Nat → Nat → Bool → Nat @ ⟨22, 2⟩-⟨25, 10⟩ Nat : Type @ ⟨22, 6⟩-⟨22, 7⟩ x : Nat @ ⟨22, 6⟩-⟨22, 7⟩ Nat : Type @ ⟨22, 8⟩-⟨22, 9⟩ y : Nat @ ⟨22, 8⟩-⟨22, 9⟩ Bool : Type @ ⟨22, 10⟩-⟨22, 11⟩ b : Bool @ ⟨22, 10⟩-⟨22, 11⟩ let x : Nat × Nat := (x + y, x - y); match x with | (z, w) => let z1 : Nat := z + w; z + z1 : Nat @ ⟨23, 4⟩-⟨25, 10⟩ Macro expansion let (z, w) := (x + y, x - y) let z1 := z + w z + z1 ===> let x✝ : _ := (x + y, x - y); match x✝ with | (z, w) => let z1 := z + w z + z1 let x : Nat × Nat := (x + y, x - y); match x with | (z, w) => let z1 : Nat := z + w; z + z1 : Nat @ ⟨23, 4⟩†-⟨25, 10⟩ Nat × Nat : Type @ ⟨23, 4⟩-⟨23, 5⟩ (x + y, x - y) : Nat × Nat @ ⟨23, 18⟩-⟨23, 32⟩ Macro expansion (x + y, x - y) ===> Prod.mk✝ (x + y) (x - y) (x + y, x - y) : Nat × Nat @ ⟨23, 18⟩†-⟨23, 31⟩ Prod.mk : {α β : Type} → α → β → α × β @ ⟨23, 18⟩†-⟨23, 25⟩† x + y : Nat @ ⟨23, 19⟩-⟨23, 24⟩ Macro expansion x + y ===> HAdd.hAdd✝ x y HAdd.hAdd : {α β γ : Type} → [self : HAdd α β γ] → α → β → γ @ ⟨23, 19⟩†-⟨23, 28⟩† x : Nat @ ⟨23, 19⟩-⟨23, 20⟩ x : Nat @ ⟨23, 19⟩-⟨23, 20⟩ y : Nat @ ⟨23, 23⟩-⟨23, 24⟩ y : Nat @ ⟨23, 23⟩-⟨23, 24⟩ x - y : Nat @ ⟨23, 26⟩-⟨23, 31⟩ Macro expansion x - y ===> HSub.hSub✝ x y HSub.hSub : {α β γ : Type} → [self : HSub α β γ] → α → β → γ @ ⟨23, 26⟩†-⟨24, 2⟩† x : Nat @ ⟨23, 26⟩-⟨23, 27⟩ x : Nat @ ⟨23, 26⟩-⟨23, 27⟩ y : Nat @ ⟨23, 30⟩-⟨23, 31⟩ y : Nat @ ⟨23, 30⟩-⟨23, 31⟩ x✝ : Nat × Nat @ ⟨23, 4⟩†-⟨25, 10⟩† match x✝ with | (z, w) => let z1 : Nat := z + w; z + z1 : Nat @ ⟨23, 4⟩†-⟨25, 10⟩ [.] `z : none [.] `w : none (z, w) : Nat × Nat @ ⟨23, 8⟩-⟨23, 14⟩ Macro expansion (z, w) ===> Prod.mk✝ z w (z, w) : Nat × Nat @ ⟨23, 8⟩†-⟨23, 13⟩ Prod.mk : {α β : Type} → α → β → α × β @ ⟨23, 8⟩†-⟨23, 15⟩† z : Nat @ ⟨23, 9⟩-⟨23, 10⟩ z : Nat @ ⟨23, 9⟩-⟨23, 10⟩ w : Nat @ ⟨23, 12⟩-⟨23, 13⟩ w : Nat @ ⟨23, 12⟩-⟨23, 13⟩ let z1 : Nat := z + w; z + z1 : Nat @ ⟨24, 4⟩-⟨25, 10⟩ Nat : Type @ ⟨24, 8⟩-⟨24, 9⟩ z + w : Nat @ ⟨24, 14⟩-⟨24, 19⟩ Macro expansion z + w ===> HAdd.hAdd✝ z w HAdd.hAdd : {α β γ : Type} → [self : HAdd α β γ] → α → β → γ @ ⟨24, 14⟩†-⟨25, 3⟩† z : Nat @ ⟨24, 14⟩-⟨24, 15⟩ z : Nat @ ⟨24, 14⟩-⟨24, 15⟩ w : Nat @ ⟨24, 18⟩-⟨24, 19⟩ w : Nat @ ⟨24, 18⟩-⟨24, 19⟩ z1 : Nat @ ⟨24, 8⟩-⟨24, 10⟩ z + z1 : Nat @ ⟨25, 4⟩-⟨25, 10⟩ Macro expansion z + z1 ===> HAdd.hAdd✝ z z1 HAdd.hAdd : {α β γ : Type} → [self : HAdd α β γ] → α → β → γ @ ⟨25, 4⟩†-⟨27, 1⟩† z : Nat @ ⟨25, 4⟩-⟨25, 5⟩ z : Nat @ ⟨25, 4⟩-⟨25, 5⟩ z1 : Nat @ ⟨25, 8⟩-⟨25, 10⟩ z1 : Nat @ ⟨25, 8⟩-⟨25, 10⟩ [Elab.info] command @ ⟨27, 0⟩-⟨28, 17⟩ Nat × Array (Array Nat) : Type @ ⟨27, 12⟩-⟨27, 35⟩ Macro expansion Nat × Array (Array Nat) ===> Prod✝ Nat (Array (Array Nat)) Prod : Type → Type → Type @ ⟨27, 12⟩†-⟨27, 16⟩† Nat : Type @ ⟨27, 12⟩-⟨27, 15⟩ Nat : Type @ ⟨27, 12⟩-⟨27, 15⟩ Array (Array Nat) : Type @ ⟨27, 18⟩-⟨27, 35⟩ Array : Type → Type @ ⟨27, 18⟩-⟨27, 23⟩ Array Nat : Type @ ⟨27, 24⟩-⟨27, 35⟩ Array Nat : Type @ ⟨27, 25⟩-⟨27, 34⟩ Array : Type → Type @ ⟨27, 25⟩-⟨27, 30⟩ Nat : Type @ ⟨27, 31⟩-⟨27, 34⟩ Nat : Type @ ⟨27, 31⟩-⟨27, 34⟩ s : Nat × Array (Array Nat) @ ⟨27, 8⟩-⟨27, 9⟩ Array Nat : Type @ ⟨27, 39⟩-⟨27, 48⟩ Array : Type → Type @ ⟨27, 39⟩-⟨27, 44⟩ Nat : Type @ ⟨27, 45⟩-⟨27, 48⟩ Nat : Type @ ⟨27, 45⟩-⟨27, 48⟩ Array.push (Array.getOp s.snd 1) s.fst : Array Nat @ ⟨28, 2⟩-⟨28, 17⟩ s : Nat × Array (Array Nat) @ ⟨28, 2⟩-⟨28, 3⟩ Prod.snd : {α β : Type} → α × β → β @ ⟨28, 4⟩-⟨28, 5⟩ Array.getOp : {α : Type} → [inst : Inhabited α] → Array α → Nat → α @ ⟨28, 5⟩-⟨28, 6⟩ 1 : Nat @ ⟨28, 6⟩-⟨28, 7⟩ [.] Array.getOp s.snd 1 : Array Nat @ ⟨28, 2⟩-⟨28, 13⟩ Array.push : {α : Type} → Array α → α → Array α @ ⟨28, 9⟩-⟨28, 13⟩ s.fst : Nat @ ⟨28, 14⟩-⟨28, 17⟩ s : Nat × Array (Array Nat) @ ⟨28, 14⟩-⟨28, 15⟩ Prod.fst : {α β : Type} → α × β → α @ ⟨28, 16⟩-⟨28, 17⟩ [Elab.info] command @ ⟨30, 0⟩-⟨31, 20⟩ B : Type @ ⟨30, 14⟩-⟨30, 15⟩ B : Type @ ⟨30, 14⟩-⟨30, 15⟩ arg : B @ ⟨30, 8⟩-⟨30, 11⟩ Nat : Type @ ⟨30, 19⟩-⟨30, 22⟩ Nat : Type @ ⟨30, 19⟩-⟨30, 22⟩ A.val arg.pair.fst 0 : Nat @ ⟨31, 2⟩-⟨31, 20⟩ arg : B @ ⟨31, 2⟩-⟨31, 5⟩ [.] arg : B @ ⟨31, 2⟩-⟨31, 18⟩ B.pair : B → A × A @ ⟨31, 6⟩-⟨31, 10⟩ [.] arg.pair : A × A @ ⟨31, 2⟩-⟨31, 18⟩ Prod.fst : {α β : Type} → α × β → α @ ⟨31, 11⟩-⟨31, 14⟩ [.] arg.pair.fst : A @ ⟨31, 2⟩-⟨31, 18⟩ A.val : A → Nat → Nat @ ⟨31, 15⟩-⟨31, 18⟩ 0 : Nat @ ⟨31, 19⟩-⟨31, 20⟩ [Elab.info] command @ ⟨33, 0⟩-⟨35, 1⟩ Nat : Type @ ⟨33, 12⟩-⟨33, 15⟩ Nat : Type @ ⟨33, 12⟩-⟨33, 15⟩ x : Nat @ ⟨33, 8⟩-⟨33, 9⟩ B : Type @ ⟨33, 19⟩-⟨33, 20⟩ B : Type @ ⟨33, 19⟩-⟨33, 20⟩ { pair := ({ val := id }, { val := id }) } : B @ ⟨33, 24⟩-⟨35, 1⟩ ({ val := id }, { val := id }) : A × A @ ⟨34, 10⟩-⟨34, 40⟩ Macro expansion ({ val := id }, { val := id }) ===> Prod.mk✝ { val := id } { val := id } ({ val := id }, { val := id }) : A × A @ ⟨34, 10⟩†-⟨34, 39⟩ Prod.mk : {α β : Type} → α → β → α × β @ ⟨34, 10⟩†-⟨34, 17⟩† { val := id } : A @ ⟨34, 11⟩-⟨34, 24⟩ id : Nat → Nat @ ⟨34, 20⟩-⟨34, 22⟩ id : {α : Type} → α → α @ ⟨34, 20⟩-⟨34, 22⟩ val : Nat → Nat := id @ ⟨34, 13⟩-⟨34, 16⟩ { val := id } : A @ ⟨34, 26⟩-⟨34, 39⟩ id : Nat → Nat @ ⟨34, 35⟩-⟨34, 37⟩ id : {α : Type} → α → α @ ⟨34, 35⟩-⟨34, 37⟩ val : Nat → Nat := id @ ⟨34, 28⟩-⟨34, 31⟩ pair : A × A := ({ val := id }, { val := id }) @ ⟨34, 2⟩-⟨34, 6⟩ def id.{u} : {α : Sort u} → α → α := fun {α : Sort u} (a : α) => a [Elab.info] command @ ⟨37, 0⟩-⟨37, 9⟩ id : {α : Sort u} → α → α @ ⟨37, 7⟩-⟨37, 9⟩