में अप्रत्याशित अस्तित्व का उत्पादन करता है यहां एक अपरिवर्तनीय प्रकार pc
है जिसे मैं गणितीय प्रमेय में उपयोग कर रहा हूं।उलटा कोक
Inductive pc (n : nat) : Type :=
| pcs : forall (m : nat), m < n -> pc n
| pcm : pc n -> pc n -> pc n.
और एक और आगमनात्मक प्रकार pc_tree
, जो मूल रूप से एक द्विआधारी पेड़ जो एक या अधिक pc
रों होता है। pcts
एक पत्ता नोड कन्स्ट्रक्टर है जिसमें एक pc
है, और pctm
एक आंतरिक नोड कन्स्ट्रक्टर है जिसमें एकाधिक pc
एस शामिल हैं।
Inductive pc_tree : Type :=
| pcts : forall (n : nat), pc n -> pc_tree
| pctm : pc_tree -> pc_tree -> pc_tree.
और एक अनिवार्य रूप से परिभाषित प्रस्ताव contains
। contains n x t
का अर्थ है कि पेड़ t
में कम से कम एक ocurrence x : pc n
है।
Lemma contains_single_eq : forall (n : nat) (x y : pc n), contains n x (pcts n y) -> x = y.
क्या लेम्मा का मतलब है वास्तव में सरल है::
Inductive contains (n : nat) (x : pc n) : pc_tree -> Prop :=
| contain0 : contains n x (pcts n x)
| contain1 : forall (t s : pc_tree), contains n x t -> contains n x (pctm t s)
| contain2 : forall (t s : pc_tree), contains n x t -> contains n x (pctm s t).
अब, समस्याग्रस्त लेम्मा मैं साबित करने के लिए की जरूरत है एक पेड़ y : pc n
वाली एकल पत्ती नोड है कि कुछ x : pc n
होता है, यह इस प्रकार है कि x = y
। मैंने सोचा कि मुझे inversion
contains
पर इसे सरल साबित करने में सक्षम होना चाहिए। तो जब मैं
Lemma contains_single_eq : forall (n : nat) (x y : pc n), contains n x (pcts n y) -> x = y.
intros n x y H. inversion H.
लिखा था मैं संदर्भ में एक परिकल्पना के रूप x = y
पाने के लिए उम्मीद कर रहा था। यहाँ है कि मैं क्या बजाय मिल गया है:
1 subgoal
n : nat
x : pc n
y : pc n
H : contains n x (pcts n y)
H1 : existT (fun n : nat => pc n) n x = existT (fun n : nat => pc n) n y
====================================================================== (1/1)
x = y
H1
मेरी अपेक्षा से काफी अलग है। (मैंने कभी भी existT
कभी नहीं देखा है।) मुझे इसकी परवाह है कि मैं contains_single_eq
साबित करता हूं, लेकिन मुझे यकीन नहीं है कि इसके लिए H1
का उपयोग कैसे करें, या यह बिल्कुल उपयोग योग्य है या नहीं।
किसी भी विचार?
'{x: टी एंड पी एक्स}' एक निर्भर राशि है जैसे 'टी * पी' एक परस्पर निर्भर राशि है। '@existT टी पी एक्स एच: {एक्स: टी एंड पी एक्स} 'जैसे @ @ पैयर टी पी एक्स एच: टी * पी'। 'एक्स मौजूद है: टी, पी एक्स',' {x: टी | पी एक्स} ', और' {x: टी एंड पी एक्स} 'बहुत समान हैं। 'प्रिंट पूर्व' का उपयोग करें, 'sig. प्रिंट करें', और 'sigT.' प्रिंट करें' कमांड का उपयोग करें। –