2014-06-06 46 views
1

我努力證明我的inductive_set滿足必要的單調性要求。有人能告訴我在這裏做錯了嗎?在inductive_set中使用mono屬性

theory Scratch imports Main begin 

consts foo :: "'a set ⇒ 'a set" 

lemma foo_mono [mono]: 
"x ⊆ y ⟶ foo x ⊆ foo y" 
sorry 

inductive_set blah :: "'a set" 
where 
    "x ∈ foo blah ⟹ x ∈ blah" 
monos foo_mono 

end 

回答

2

如果你說出你的單調性引理這樣它的工作原理:

lemma foo_mono [mono_set]: 
"A ⊆ B ⟹ x ∈ foo A ⟶ x ∈ foo B" 

另外請注意,您應該使用mono_set屬性,而不是mono,如果你想引理被inductive_set自動使用。也就是說,使用mono_set使inductive_set命令中的monos子句不必要。

+0

謝謝布萊恩,那是超級。一個相關的跟進:如果我現在將''a''實例化爲'nat×nat'的實際類型,則單調性證明再次失敗!我是否需要包含一些關於'(_,_)'的單調性的定理? –