Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
ライブエディター
未変更行を折りたたむ
折り返しなし
レイアウト
分割
統合
比較精度
スマート
単語
文字
シンタックスハイライト
構文を選択
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
TCTree
作成日
昨年
差分は期限切れになりません
クリア
エクスポート
共有
説明
60 削除
行
合計
削除
文字
合計
削除
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
153 行
すべてコピー
41 追加
行
合計
追加
文字
合計
追加
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
137 行
すべてコピー
コピー
コピー済み
コピー
コピー済み
def TCTree._sizeOf_2 : (I :
Prop
) × (I → TCTree) → ℕ :=
def TCTree._sizeOf_2 : (I :
Type 1
) × (I → TCTree) → ℕ :=
fun t => TCTree.rec_1 (fun a a_ih => 1 + a_ih) (fun fst snd snd_ih => 1 + sizeOf fst) t
fun t => TCTree.rec_1 (fun a a_ih => 1 + a_ih) (fun fst snd snd_ih => 1 + sizeOf fst) t
protected def TCTree.noConfusionType.{u} : Sort u → TCTree → TCTree → Sort u :=
protected def TCTree.noConfusionType.{u} : Sort u → TCTree → TCTree → Sort u :=
fun P x1 x2 => x1.casesOn fun a => TCTree.noConfusionType.withCtor (Sort u) 0 (fun x a_1 => (a = a_1 → P) → P) P x2
fun P x1 x2 => x1.casesOn fun a => TCTree.noConfusionType.withCtor (Sort u) 0 (fun x a_1 => (a = a_1 → P) → P) P x2
コピー
コピー済み
コピー
コピー済み
protected
def
TCTree.brecOn.{u} : {motive_1 : TCTree → Sort u} →
protected
axiom
TCTree.brecOn.{u} : {motive_1 : TCTree → Sort u} →
{motive_2 : (I :
Prop
) × (I → TCTree) → Sort u} →
{motive_2 : (I :
Type 1
) × (I → TCTree) → Sort u} →
(t : TCTree) →
(t : TCTree) →
((t : TCTree) → t.below → motive_1 t) →
((t : TCTree) → t.below → motive_1 t) →
コピー
コピー済み
コピー
コピー済み
((t : (I :
Prop
) × (I → TCTree)) → TCTree.below_1 t → motive_2 t) → motive_1 t
:=
((t : (I :
Type 1
) × (I → TCTree)) → TCTree.below_1 t → motive_2 t) → motive_1 t
fun {motive_1} {motive_2} t F_1 F_2 =>
(TCTree.rec (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩)
(fun fst snd snd_ih =>
⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩)
t).1
コピー
コピー済み
コピー
コピー済み
protected
def
TCTree.below.{u} : {motive_1 : TCTree → Sort u} →
protected
axiom
TCTree.below.{u} : {motive_1 : TCTree → Sort u} →
{motive_2 : (I :
Prop
) × (I → TCTree) → Sort u} → TCTree → Sort (max 1 u)
:=
{motive_2 : (I :
Type 1
) × (I → TCTree) → Sort u} → TCTree → Sort (max 1 u)
fun {motive_1} {motive_2} t =>
TCTree.rec (fun a a_ih => motive_2 a ×' a_ih)
(fun fst snd snd_ih => ((a : fst) → motive_1 (snd a)) ×' ((a : fst) → snd_ih a)) t
コピー
コピー済み
コピー
コピー済み
protected def TCTree.noConfusionType.withCtorType.{u} : Type u → ℕ → Type (max
1
u) :=
protected def TCTree.noConfusionType.withCtorType.{u} : Type u → ℕ → Type (max
3
u) :=
fun P ctorIdx => PUnit.{
2
} → (I :
Prop
) × (I → TCTree) → P
fun P ctorIdx => PUnit.{
4
} → (I :
Type 1
) × (I → TCTree) → P
コピー
コピー済み
コピー
コピー済み
constructor TCTree.node : (I :
Prop
) × (I → TCTree) → TCTree
constructor TCTree.node : (I :
Type 1
) × (I → TCTree) → TCTree
コピー
コピー済み
コピー
コピー済み
protected def TCTree.binductionOn_1 : ∀ {motive_1 : TCTree → Prop} {motive_2 : (I :
Prop
) × (I → TCTree) → Prop}
protected def TCTree.binductionOn_1 : ∀ {motive_1 : TCTree → Prop} {motive_2 : (I :
Type 1
) × (I → TCTree) → Prop}
(t : (I :
Prop
) × (I → TCTree)),
(t : (I :
Type 1
) × (I → TCTree)),
(∀ (t : TCTree), t.ibelow → motive_1 t) →
(∀ (t : TCTree), t.ibelow → motive_1 t) →
コピー
コピー済み
コピー
コピー済み
(∀ (t : (I :
Prop
) × (I → TCTree)), TCTree.ibelow_1 t → motive_2 t) → motive_2 t :=
(∀ (t : (I :
Type 1
) × (I → TCTree)), TCTree.ibelow_1 t → motive_2 t) → motive_2 t :=
fun {motive_1} {motive_2} t F_1 F_2 =>
fun {motive_1} {motive_2} t F_1 F_2 =>
(TCTree.rec_1 (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩)
(TCTree.rec_1 (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩)
(fun fst snd snd_ih =>
(fun fst snd snd_ih =>
⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩⟩)
⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩⟩)
t).1
t).1
コピー
コピー済み
コピー
コピー済み
protected
def
TCTree.brecOn_1.{u} : {motive_1 : TCTree → Sort u} →
protected
axiom
TCTree.brecOn_1.{u} : {motive_1 : TCTree → Sort u} →
{motive_2 : (I :
Prop
) × (I → TCTree) → Sort u} →
{motive_2 : (I :
Type 1
) × (I → TCTree) → Sort u} →
(t : (I :
Prop
) × (I → TCTree)) →
(t : (I :
Type 1
) × (I → TCTree)) →
((t : TCTree) → t.below → motive_1 t) →
((t : TCTree) → t.below → motive_1 t) →
コピー
コピー済み
コピー
コピー済み
((t : (I :
Prop
) × (I → TCTree)) → TCTree.below_1 t → motive_2 t) → motive_2 t
:=
((t : (I :
Type 1
) × (I → TCTree)) → TCTree.below_1 t → motive_2 t) → motive_2 t
fun {motive_1} {motive_2} t F_1 F_2 =>
(TCTree.rec_1 (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩)
(fun fst snd snd_ih =>
⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩)
t).1
コピー
コピー済み
コピー
コピー済み
protected def TCTree.binductionOn : ∀ {motive_1 : TCTree → Prop} {motive_2 : (I :
Prop
) × (I → TCTree) → Prop}
protected def TCTree.binductionOn : ∀ {motive_1 : TCTree → Prop} {motive_2 : (I :
Type 1
) × (I → TCTree) → Prop}
(t : TCTree),
(t : TCTree),
(∀ (t : TCTree), t.ibelow → motive_1 t) →
(∀ (t : TCTree), t.ibelow → motive_1 t) →
コピー
コピー済み
コピー
コピー済み
(∀ (t : (I :
Prop
) × (I → TCTree)), TCTree.ibelow_1 t → motive_2 t) → motive_1 t :=
(∀ (t : (I :
Type 1
) × (I → TCTree)), TCTree.ibelow_1 t → motive_2 t) → motive_1 t :=
fun {motive_1} {motive_2} t F_1 F_2 =>
fun {motive_1} {motive_2} t F_1 F_2 =>
(TCTree.rec (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩)
(TCTree.rec (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩)
(fun fst snd snd_ih =>
(fun fst snd snd_ih =>
⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩⟩)
⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩⟩)
t).1
t).1
def TCTree.casesOn.{u} : {motive_1 : TCTree → Sort u} →
def TCTree.casesOn.{u} : {motive_1 : TCTree → Sort u} →
コピー
コピー済み
コピー
コピー済み
(t : TCTree) → ((a : (I :
Prop
) × (I → TCTree)) → motive_1 (TCTree.node a)) → motive_1 t :=
(t : TCTree) → ((a : (I :
Type 1
) × (I → TCTree)) → motive_1 (TCTree.node a)) → motive_1 t :=
fun {motive_1} t node => TCTree.rec (fun a a_ih => node a) (fun fst snd snd_ih => PUnit.unit) t
fun {motive_1} t node => TCTree.rec (fun a a_ih => node a) (fun fst snd snd_ih => PUnit.unit) t
コピー
コピー済み
コピー
コピー済み
theorem TCTree.node.sizeOf_spec : ∀ (a : (I :
Prop
) × (I → TCTree)), sizeOf (TCTree.node a) = 1 + sizeOf a :=
theorem TCTree.node.sizeOf_spec : ∀ (a : (I :
Type 1
) × (I → TCTree)), sizeOf (TCTree.node a) = 1 + sizeOf a :=
fun a => Eq.refl (1 + sizeOf a)
fun a => Eq.refl (1 + sizeOf a)
recursor TCTree.rec_1.{u} : {motive_1 : TCTree → Sort u} →
recursor TCTree.rec_1.{u} : {motive_1 : TCTree → Sort u} →
コピー
コピー済み
コピー
コピー済み
{motive_2 : (I :
Prop
) × (I → TCTree) → Sort u} →
{motive_2 : (I :
Type 1
) × (I → TCTree) → Sort u} →
((a : (I :
Prop
) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) →
((a : (I :
Type 1
) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) →
((fst :
Prop
) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) →
((fst :
Type 1
) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) →
(t : (I :
Prop
) × (I → TCTree)) → motive_2 t
(t : (I :
Type 1
) × (I → TCTree)) → motive_2 t
protected def TCTree.ibelow_1 : {motive_1 : TCTree → Prop} →
protected def TCTree.ibelow_1 : {motive_1 : TCTree → Prop} →
コピー
コピー済み
コピー
コピー済み
{motive_2 : (I :
Prop
) × (I → TCTree) → Prop} → (I :
Prop
) × (I → TCTree) → Prop :=
{motive_2 : (I :
Type 1
) × (I → TCTree) → Prop} → (I :
Type 1
) × (I → TCTree) → Prop :=
fun {motive_1} {motive_2} t =>
fun {motive_1} {motive_2} t =>
TCTree.rec_1 (fun a a_ih => motive_2 a ∧ a_ih)
TCTree.rec_1 (fun a a_ih => motive_2 a ∧ a_ih)
(fun fst snd snd_ih => (∀ (a : fst), motive_1 (snd a)) ∧ ∀ (a : fst), snd_ih a) t
(fun fst snd snd_ih => (∀ (a : fst), motive_1 (snd a)) ∧ ∀ (a : fst), snd_ih a) t
コピー
コピー済み
コピー
コピー済み
inductive TCTree : Type
inductive TCTree : Type
2
constructors:
constructors:
コピー
コピー済み
コピー
コピー済み
TCTree.node : (I :
Prop
) × (I → TCTree) → TCTree
TCTree.node : (I :
Type 1
) × (I → TCTree) → TCTree
def TCTree._sizeOf_inst : SizeOf TCTree :=
def TCTree._sizeOf_inst : SizeOf TCTree :=
{ sizeOf := fun m => m._sizeOf_1 }
{ sizeOf := fun m => m._sizeOf_1 }
コピー
コピー済み
コピー
コピー済み
theorem TCTree.node.inj : ∀ {a a_1 : (I :
Prop
) × (I → TCTree)}, TCTree.node a = TCTree.node a_1 → a = a_1 :=
theorem TCTree.node.inj : ∀ {a a_1 : (I :
Type 1
) × (I → TCTree)}, TCTree.node a = TCTree.node a_1 → a = a_1 :=
fun {a a_1} x => TCTree.noConfusion x fun x => x
fun {a a_1} x => TCTree.noConfusion x fun x => x
def TCTree._sizeOf_1 : TCTree → ℕ :=
def TCTree._sizeOf_1 : TCTree → ℕ :=
fun t => TCTree.rec (fun a a_ih => 1 + a_ih) (fun fst snd snd_ih => 1 + sizeOf fst) t
fun t => TCTree.rec (fun a a_ih => 1 + a_ih) (fun fst snd snd_ih => 1 + sizeOf fst) t
protected def TCTree.noConfusionType.withCtor.{u} : (P : Type u) →
protected def TCTree.noConfusionType.withCtor.{u} : (P : Type u) →
(ctorIdx : ℕ) → TCTree.noConfusionType.withCtorType P ctorIdx → P → TCTree → P :=
(ctorIdx : ℕ) → TCTree.noConfusionType.withCtorType P ctorIdx → P → TCTree → P :=
fun P ctorIdx k k' x => x.casesOn fun a => if h : ctorIdx = 0 then (h ▸ k) PUnit.unit a else k'
fun P ctorIdx k k' x => x.casesOn fun a => if h : ctorIdx = 0 then (h ▸ k) PUnit.unit a else k'
protected def TCTree.noConfusion.{u} : {P : Sort u} → {x1 x2 : TCTree} → x1 = x2 → TCTree.noConfusionType P x1 x2 :=
protected def TCTree.noConfusion.{u} : {P : Sort u} → {x1 x2 : TCTree} → x1 = x2 → TCTree.noConfusionType P x1 x2 :=
fun {P} {x1 x2} h12 =>
fun {P} {x1 x2} h12 =>
Eq.ndrec (motive := fun a => x1 = a → TCTree.noConfusionType P x1 a) (fun h11 => x1.casesOn fun a x => x ⋯) h12 h12
Eq.ndrec (motive := fun a => x1 = a → TCTree.noConfusionType P x1 a) (fun h11 => x1.casesOn fun a x => x ⋯) h12 h12
コピー
コピー済み
コピー
コピー済み
theorem TCTree.node.injEq : ∀ (a a_1 : (I :
Prop
) × (I → TCTree)), (TCTree.node a = TCTree.node a_1) = (a = a_1) :=
theorem TCTree.node.injEq : ∀ (a a_1 : (I :
Type 1
) × (I → TCTree)), (TCTree.node a = TCTree.node a_1) = (a = a_1) :=
fun a a_1 =>
fun a a_1 =>
Eq.propIntro (fun a_2 => TCTree.noConfusion a_2 fun x => x) fun a_2 =>
Eq.propIntro (fun a_2 => TCTree.noConfusion a_2 fun x => x) fun a_2 =>
Eq.casesOn (motive := fun a_3 x => a_1 = a_3 → a_2 ≍ x → TCTree.node a = TCTree.node a_1) a_2
Eq.casesOn (motive := fun a_3 x => a_1 = a_3 → a_2 ≍ x → TCTree.node a = TCTree.node a_1) a_2
(fun h =>
(fun h =>
Eq.ndrec (motive := fun a_3 => ∀ (a_4 : a = a_3), a_4 ≍ Eq.refl a → TCTree.node a = TCTree.node a_3)
Eq.ndrec (motive := fun a_3 => ∀ (a_4 : a = a_3), a_4 ≍ Eq.refl a → TCTree.node a = TCTree.node a_3)
(fun a_3 h => Eq.refl (TCTree.node a)) (Eq.symm h) a_2)
(fun a_3 h => Eq.refl (TCTree.node a)) (Eq.symm h) a_2)
(Eq.refl a_1) (HEq.refl a_2)
(Eq.refl a_1) (HEq.refl a_2)
protected def TCTree.recOn.{u} : {motive_1 : TCTree → Sort u} →
protected def TCTree.recOn.{u} : {motive_1 : TCTree → Sort u} →
コピー
コピー済み
コピー
コピー済み
{motive_2 : (I :
Prop
) × (I → TCTree) → Sort u} →
{motive_2 : (I :
Type 1
) × (I → TCTree) → Sort u} →
(t : TCTree) →
(t : TCTree) →
コピー
コピー済み
コピー
コピー済み
((a : (I :
Prop
) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) →
((a : (I :
Type 1
) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) →
((fst :
Prop
) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) →
((fst :
Type 1
) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) →
motive_1 t :=
motive_1 t :=
fun {motive_1} {motive_2} t node mk => TCTree.rec node mk t
fun {motive_1} {motive_2} t node mk => TCTree.rec node mk t
コピー
コピー済み
コピー
コピー済み
protected
def
TCTree.below_1.{u} : {motive_1 : TCTree → Sort u} →
protected
axiom
TCTree.below_1.{u} : {motive_1 : TCTree → Sort u} →
{motive_2 : (I :
Prop
) × (I → TCTree) → Sort u} → (I :
Prop
) × (I → TCTree) → Sort (max 1 u)
:=
{motive_2 : (I :
Type 1
) × (I → TCTree) → Sort u} → (I :
Type 1
) × (I → TCTree) → Sort (max 1 u)
fun {motive_1} {motive_2} t =>
TCTree.rec_1 (fun a a_ih => motive_2 a ×' a_ih)
(fun fst snd snd_ih => ((a : fst) → motive_1 (snd a)) ×' ((a : fst) → snd_ih a)) t
protected def TCTree.ibelow : {motive_1 : TCTree → Prop} →
protected def TCTree.ibelow : {motive_1 : TCTree → Prop} →
コピー
コピー済み
コピー
コピー済み
{motive_2 : (I :
Prop
) × (I → TCTree) → Prop} → TCTree → Prop :=
{motive_2 : (I :
Type 1
) × (I → TCTree) → Prop} → TCTree → Prop :=
fun {motive_1} {motive_2} t =>
fun {motive_1} {motive_2} t =>
TCTree.rec (fun a a_ih => motive_2 a ∧ a_ih)
TCTree.rec (fun a a_ih => motive_2 a ∧ a_ih)
(fun fst snd snd_ih => (∀ (a : fst), motive_1 (snd a)) ∧ ∀ (a : fst), snd_ih a) t
(fun fst snd snd_ih => (∀ (a : fst), motive_1 (snd a)) ∧ ∀ (a : fst), snd_ih a) t
recursor TCTree.rec.{u} : {motive_1 : TCTree → Sort u} →
recursor TCTree.rec.{u} : {motive_1 : TCTree → Sort u} →
コピー
コピー済み
コピー
コピー済み
{motive_2 : (I :
Prop
) × (I → TCTree) → Sort u} →
{motive_2 : (I :
Type 1
) × (I → TCTree) → Sort u} →
((a : (I :
Prop
) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) →
((a : (I :
Type 1
) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) →
((fst :
Prop
) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) →
((fst :
Type 1
) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) →
(t : TCTree) → motive_1 t
(t : TCTree) → motive_1 t
-- Lean.auxRecExt extension: 10 new entries
-- Lean.auxRecExt extension: 10 new entries
-- Lean.noConfusionExt extension: 1 new entries
-- Lean.noConfusionExt extension: 1 new entries
-- Lean.declRangeExt extension: 0 new entries
-- Lean.declRangeExt extension: 0 new entries
-- Lean.protectedExt extension: 13 new entries
-- Lean.protectedExt extension: 13 new entries
-- Lean.namespacesExt extension: 3 new entries
-- Lean.namespacesExt extension: 3 new entries
-- reducibilityCore extension: 14 new entries
-- reducibilityCore extension: 14 new entries
-- Lean.Meta.globalInstanceExtension extension: 1 new entries
-- Lean.Meta.globalInstanceExtension extension: 1 new entries
-- Lean.Meta.instanceExtension extension: 1 new entries
-- Lean.Meta.instanceExtension extension: 1 new entries
-- Lean.Meta.simpExtension extension: 2 new entries
-- Lean.Meta.simpExtension extension: 2 new entries
-- Lean.Meta.completionBlackListExt extension: 3 new entries
-- Lean.Meta.completionBlackListExt extension: 3 new entries
保存された差分
原文
ファイルを開く
def TCTree._sizeOf_2 : (I : Prop) × (I → TCTree) → ℕ := fun t => TCTree.rec_1 (fun a a_ih => 1 + a_ih) (fun fst snd snd_ih => 1 + sizeOf fst) t protected def TCTree.noConfusionType.{u} : Sort u → TCTree → TCTree → Sort u := fun P x1 x2 => x1.casesOn fun a => TCTree.noConfusionType.withCtor (Sort u) 0 (fun x a_1 => (a = a_1 → P) → P) P x2 protected def TCTree.brecOn.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Prop) × (I → TCTree) → Sort u} → (t : TCTree) → ((t : TCTree) → t.below → motive_1 t) → ((t : (I : Prop) × (I → TCTree)) → TCTree.below_1 t → motive_2 t) → motive_1 t := fun {motive_1} {motive_2} t F_1 F_2 => (TCTree.rec (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩) (fun fst snd snd_ih => ⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩) t).1 protected def TCTree.below.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Prop) × (I → TCTree) → Sort u} → TCTree → Sort (max 1 u) := fun {motive_1} {motive_2} t => TCTree.rec (fun a a_ih => motive_2 a ×' a_ih) (fun fst snd snd_ih => ((a : fst) → motive_1 (snd a)) ×' ((a : fst) → snd_ih a)) t protected def TCTree.noConfusionType.withCtorType.{u} : Type u → ℕ → Type (max 1 u) := fun P ctorIdx => PUnit.{2} → (I : Prop) × (I → TCTree) → P constructor TCTree.node : (I : Prop) × (I → TCTree) → TCTree protected def TCTree.binductionOn_1 : ∀ {motive_1 : TCTree → Prop} {motive_2 : (I : Prop) × (I → TCTree) → Prop} (t : (I : Prop) × (I → TCTree)), (∀ (t : TCTree), t.ibelow → motive_1 t) → (∀ (t : (I : Prop) × (I → TCTree)), TCTree.ibelow_1 t → motive_2 t) → motive_2 t := fun {motive_1} {motive_2} t F_1 F_2 => (TCTree.rec_1 (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩) (fun fst snd snd_ih => ⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩⟩) t).1 protected def TCTree.brecOn_1.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Prop) × (I → TCTree) → Sort u} → (t : (I : Prop) × (I → TCTree)) → ((t : TCTree) → t.below → motive_1 t) → ((t : (I : Prop) × (I → TCTree)) → TCTree.below_1 t → motive_2 t) → motive_2 t := fun {motive_1} {motive_2} t F_1 F_2 => (TCTree.rec_1 (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩) (fun fst snd snd_ih => ⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩) t).1 protected def TCTree.binductionOn : ∀ {motive_1 : TCTree → Prop} {motive_2 : (I : Prop) × (I → TCTree) → Prop} (t : TCTree), (∀ (t : TCTree), t.ibelow → motive_1 t) → (∀ (t : (I : Prop) × (I → TCTree)), TCTree.ibelow_1 t → motive_2 t) → motive_1 t := fun {motive_1} {motive_2} t F_1 F_2 => (TCTree.rec (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩) (fun fst snd snd_ih => ⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩⟩) t).1 def TCTree.casesOn.{u} : {motive_1 : TCTree → Sort u} → (t : TCTree) → ((a : (I : Prop) × (I → TCTree)) → motive_1 (TCTree.node a)) → motive_1 t := fun {motive_1} t node => TCTree.rec (fun a a_ih => node a) (fun fst snd snd_ih => PUnit.unit) t theorem TCTree.node.sizeOf_spec : ∀ (a : (I : Prop) × (I → TCTree)), sizeOf (TCTree.node a) = 1 + sizeOf a := fun a => Eq.refl (1 + sizeOf a) recursor TCTree.rec_1.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Prop) × (I → TCTree) → Sort u} → ((a : (I : Prop) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) → ((fst : Prop) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) → (t : (I : Prop) × (I → TCTree)) → motive_2 t protected def TCTree.ibelow_1 : {motive_1 : TCTree → Prop} → {motive_2 : (I : Prop) × (I → TCTree) → Prop} → (I : Prop) × (I → TCTree) → Prop := fun {motive_1} {motive_2} t => TCTree.rec_1 (fun a a_ih => motive_2 a ∧ a_ih) (fun fst snd snd_ih => (∀ (a : fst), motive_1 (snd a)) ∧ ∀ (a : fst), snd_ih a) t inductive TCTree : Type constructors: TCTree.node : (I : Prop) × (I → TCTree) → TCTree def TCTree._sizeOf_inst : SizeOf TCTree := { sizeOf := fun m => m._sizeOf_1 } theorem TCTree.node.inj : ∀ {a a_1 : (I : Prop) × (I → TCTree)}, TCTree.node a = TCTree.node a_1 → a = a_1 := fun {a a_1} x => TCTree.noConfusion x fun x => x def TCTree._sizeOf_1 : TCTree → ℕ := fun t => TCTree.rec (fun a a_ih => 1 + a_ih) (fun fst snd snd_ih => 1 + sizeOf fst) t protected def TCTree.noConfusionType.withCtor.{u} : (P : Type u) → (ctorIdx : ℕ) → TCTree.noConfusionType.withCtorType P ctorIdx → P → TCTree → P := fun P ctorIdx k k' x => x.casesOn fun a => if h : ctorIdx = 0 then (h ▸ k) PUnit.unit a else k' protected def TCTree.noConfusion.{u} : {P : Sort u} → {x1 x2 : TCTree} → x1 = x2 → TCTree.noConfusionType P x1 x2 := fun {P} {x1 x2} h12 => Eq.ndrec (motive := fun a => x1 = a → TCTree.noConfusionType P x1 a) (fun h11 => x1.casesOn fun a x => x ⋯) h12 h12 theorem TCTree.node.injEq : ∀ (a a_1 : (I : Prop) × (I → TCTree)), (TCTree.node a = TCTree.node a_1) = (a = a_1) := fun a a_1 => Eq.propIntro (fun a_2 => TCTree.noConfusion a_2 fun x => x) fun a_2 => Eq.casesOn (motive := fun a_3 x => a_1 = a_3 → a_2 ≍ x → TCTree.node a = TCTree.node a_1) a_2 (fun h => Eq.ndrec (motive := fun a_3 => ∀ (a_4 : a = a_3), a_4 ≍ Eq.refl a → TCTree.node a = TCTree.node a_3) (fun a_3 h => Eq.refl (TCTree.node a)) (Eq.symm h) a_2) (Eq.refl a_1) (HEq.refl a_2) protected def TCTree.recOn.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Prop) × (I → TCTree) → Sort u} → (t : TCTree) → ((a : (I : Prop) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) → ((fst : Prop) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) → motive_1 t := fun {motive_1} {motive_2} t node mk => TCTree.rec node mk t protected def TCTree.below_1.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Prop) × (I → TCTree) → Sort u} → (I : Prop) × (I → TCTree) → Sort (max 1 u) := fun {motive_1} {motive_2} t => TCTree.rec_1 (fun a a_ih => motive_2 a ×' a_ih) (fun fst snd snd_ih => ((a : fst) → motive_1 (snd a)) ×' ((a : fst) → snd_ih a)) t protected def TCTree.ibelow : {motive_1 : TCTree → Prop} → {motive_2 : (I : Prop) × (I → TCTree) → Prop} → TCTree → Prop := fun {motive_1} {motive_2} t => TCTree.rec (fun a a_ih => motive_2 a ∧ a_ih) (fun fst snd snd_ih => (∀ (a : fst), motive_1 (snd a)) ∧ ∀ (a : fst), snd_ih a) t recursor TCTree.rec.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Prop) × (I → TCTree) → Sort u} → ((a : (I : Prop) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) → ((fst : Prop) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) → (t : TCTree) → motive_1 t -- Lean.auxRecExt extension: 10 new entries -- Lean.noConfusionExt extension: 1 new entries -- Lean.declRangeExt extension: 0 new entries -- Lean.protectedExt extension: 13 new entries -- Lean.namespacesExt extension: 3 new entries -- reducibilityCore extension: 14 new entries -- Lean.Meta.globalInstanceExtension extension: 1 new entries -- Lean.Meta.instanceExtension extension: 1 new entries -- Lean.Meta.simpExtension extension: 2 new entries -- Lean.Meta.completionBlackListExt extension: 3 new entries
変更されたテキスト
ファイルを開く
def TCTree._sizeOf_2 : (I : Type 1) × (I → TCTree) → ℕ := fun t => TCTree.rec_1 (fun a a_ih => 1 + a_ih) (fun fst snd snd_ih => 1 + sizeOf fst) t protected def TCTree.noConfusionType.{u} : Sort u → TCTree → TCTree → Sort u := fun P x1 x2 => x1.casesOn fun a => TCTree.noConfusionType.withCtor (Sort u) 0 (fun x a_1 => (a = a_1 → P) → P) P x2 protected axiom TCTree.brecOn.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Type 1) × (I → TCTree) → Sort u} → (t : TCTree) → ((t : TCTree) → t.below → motive_1 t) → ((t : (I : Type 1) × (I → TCTree)) → TCTree.below_1 t → motive_2 t) → motive_1 t protected axiom TCTree.below.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Type 1) × (I → TCTree) → Sort u} → TCTree → Sort (max 1 u) protected def TCTree.noConfusionType.withCtorType.{u} : Type u → ℕ → Type (max 3 u) := fun P ctorIdx => PUnit.{4} → (I : Type 1) × (I → TCTree) → P constructor TCTree.node : (I : Type 1) × (I → TCTree) → TCTree protected def TCTree.binductionOn_1 : ∀ {motive_1 : TCTree → Prop} {motive_2 : (I : Type 1) × (I → TCTree) → Prop} (t : (I : Type 1) × (I → TCTree)), (∀ (t : TCTree), t.ibelow → motive_1 t) → (∀ (t : (I : Type 1) × (I → TCTree)), TCTree.ibelow_1 t → motive_2 t) → motive_2 t := fun {motive_1} {motive_2} t F_1 F_2 => (TCTree.rec_1 (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩) (fun fst snd snd_ih => ⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩⟩) t).1 protected axiom TCTree.brecOn_1.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Type 1) × (I → TCTree) → Sort u} → (t : (I : Type 1) × (I → TCTree)) → ((t : TCTree) → t.below → motive_1 t) → ((t : (I : Type 1) × (I → TCTree)) → TCTree.below_1 t → motive_2 t) → motive_2 t protected def TCTree.binductionOn : ∀ {motive_1 : TCTree → Prop} {motive_2 : (I : Type 1) × (I → TCTree) → Prop} (t : TCTree), (∀ (t : TCTree), t.ibelow → motive_1 t) → (∀ (t : (I : Type 1) × (I → TCTree)), TCTree.ibelow_1 t → motive_2 t) → motive_1 t := fun {motive_1} {motive_2} t F_1 F_2 => (TCTree.rec (fun a a_ih => ⟨F_1 (TCTree.node a) a_ih, a_ih⟩) (fun fst snd snd_ih => ⟨F_2 ⟨fst, snd⟩ ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩, ⟨fun a => (snd_ih a).1, fun a => (snd_ih a).2⟩⟩) t).1 def TCTree.casesOn.{u} : {motive_1 : TCTree → Sort u} → (t : TCTree) → ((a : (I : Type 1) × (I → TCTree)) → motive_1 (TCTree.node a)) → motive_1 t := fun {motive_1} t node => TCTree.rec (fun a a_ih => node a) (fun fst snd snd_ih => PUnit.unit) t theorem TCTree.node.sizeOf_spec : ∀ (a : (I : Type 1) × (I → TCTree)), sizeOf (TCTree.node a) = 1 + sizeOf a := fun a => Eq.refl (1 + sizeOf a) recursor TCTree.rec_1.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Type 1) × (I → TCTree) → Sort u} → ((a : (I : Type 1) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) → ((fst : Type 1) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) → (t : (I : Type 1) × (I → TCTree)) → motive_2 t protected def TCTree.ibelow_1 : {motive_1 : TCTree → Prop} → {motive_2 : (I : Type 1) × (I → TCTree) → Prop} → (I : Type 1) × (I → TCTree) → Prop := fun {motive_1} {motive_2} t => TCTree.rec_1 (fun a a_ih => motive_2 a ∧ a_ih) (fun fst snd snd_ih => (∀ (a : fst), motive_1 (snd a)) ∧ ∀ (a : fst), snd_ih a) t inductive TCTree : Type 2 constructors: TCTree.node : (I : Type 1) × (I → TCTree) → TCTree def TCTree._sizeOf_inst : SizeOf TCTree := { sizeOf := fun m => m._sizeOf_1 } theorem TCTree.node.inj : ∀ {a a_1 : (I : Type 1) × (I → TCTree)}, TCTree.node a = TCTree.node a_1 → a = a_1 := fun {a a_1} x => TCTree.noConfusion x fun x => x def TCTree._sizeOf_1 : TCTree → ℕ := fun t => TCTree.rec (fun a a_ih => 1 + a_ih) (fun fst snd snd_ih => 1 + sizeOf fst) t protected def TCTree.noConfusionType.withCtor.{u} : (P : Type u) → (ctorIdx : ℕ) → TCTree.noConfusionType.withCtorType P ctorIdx → P → TCTree → P := fun P ctorIdx k k' x => x.casesOn fun a => if h : ctorIdx = 0 then (h ▸ k) PUnit.unit a else k' protected def TCTree.noConfusion.{u} : {P : Sort u} → {x1 x2 : TCTree} → x1 = x2 → TCTree.noConfusionType P x1 x2 := fun {P} {x1 x2} h12 => Eq.ndrec (motive := fun a => x1 = a → TCTree.noConfusionType P x1 a) (fun h11 => x1.casesOn fun a x => x ⋯) h12 h12 theorem TCTree.node.injEq : ∀ (a a_1 : (I : Type 1) × (I → TCTree)), (TCTree.node a = TCTree.node a_1) = (a = a_1) := fun a a_1 => Eq.propIntro (fun a_2 => TCTree.noConfusion a_2 fun x => x) fun a_2 => Eq.casesOn (motive := fun a_3 x => a_1 = a_3 → a_2 ≍ x → TCTree.node a = TCTree.node a_1) a_2 (fun h => Eq.ndrec (motive := fun a_3 => ∀ (a_4 : a = a_3), a_4 ≍ Eq.refl a → TCTree.node a = TCTree.node a_3) (fun a_3 h => Eq.refl (TCTree.node a)) (Eq.symm h) a_2) (Eq.refl a_1) (HEq.refl a_2) protected def TCTree.recOn.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Type 1) × (I → TCTree) → Sort u} → (t : TCTree) → ((a : (I : Type 1) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) → ((fst : Type 1) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) → motive_1 t := fun {motive_1} {motive_2} t node mk => TCTree.rec node mk t protected axiom TCTree.below_1.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Type 1) × (I → TCTree) → Sort u} → (I : Type 1) × (I → TCTree) → Sort (max 1 u) protected def TCTree.ibelow : {motive_1 : TCTree → Prop} → {motive_2 : (I : Type 1) × (I → TCTree) → Prop} → TCTree → Prop := fun {motive_1} {motive_2} t => TCTree.rec (fun a a_ih => motive_2 a ∧ a_ih) (fun fst snd snd_ih => (∀ (a : fst), motive_1 (snd a)) ∧ ∀ (a : fst), snd_ih a) t recursor TCTree.rec.{u} : {motive_1 : TCTree → Sort u} → {motive_2 : (I : Type 1) × (I → TCTree) → Sort u} → ((a : (I : Type 1) × (I → TCTree)) → motive_2 a → motive_1 (TCTree.node a)) → ((fst : Type 1) → (snd : (fun I => I → TCTree) fst) → ((a : fst) → motive_1 (snd a)) → motive_2 ⟨fst, snd⟩) → (t : TCTree) → motive_1 t -- Lean.auxRecExt extension: 10 new entries -- Lean.noConfusionExt extension: 1 new entries -- Lean.declRangeExt extension: 0 new entries -- Lean.protectedExt extension: 13 new entries -- Lean.namespacesExt extension: 3 new entries -- reducibilityCore extension: 14 new entries -- Lean.Meta.globalInstanceExtension extension: 1 new entries -- Lean.Meta.instanceExtension extension: 1 new entries -- Lean.Meta.simpExtension extension: 2 new entries -- Lean.Meta.completionBlackListExt extension: 3 new entries
違いを見つける