는 다음과 같은 바보 같은 예를 생각해메타 보편적으로 정량화 된 변수의 이름이 바뀐 이유는 무엇입니까?
theory meta_all
imports Main
begin
lemma strict_subset: "⟦ A ⊂ B ⟧ ⟹ ∃a ∈ B. a ∉ A"
apply(blast)
done
lemma strict_subset2: "∀A B. A ⊂ B ⟶ (∃a ∈ B. a ∉ A)"
apply(blast)
done
lemma "¬ (∃A. A ⊂ A)"
apply(rule notI)
apply(erule exE)
다음으로는 strict_subset
보조 정리를 사용하여 A
및 B
모두 A
를 대체하고자하는, 그리고 그것을 그렇게 할 것이다, 그러나 완전히 물리 치고, 기존 A
에 Aa
의 이름을 바꿉니다 보조 정리를 소개하는 목적. 내가 파생 된 보조 정리 strict_subset2
모든 것이 잘 밖으로 작동 사용하므로 내가 확신하는 경우
apply(insert strict_subset [where A="A" and B="A"])
내 논리는 소리입니다.
apply(insert strict_subset2)
apply(erule_tac x="A" in allE, erule_tac x="A" in allE)
apply(drule mp, assumption)
apply(erule bexE, erule notE, assumption)
done
end
점은 대부분의 표준 보조 정리가 strict_subset
아닌 형태 strict_subset2
와 이사벨의 제조 업체의 형식은 내 자신의 첫번째 strict_subset2
자신을, ERGO 그래서, 내가 뭘해야 할 내가 의도하지 않았을 수 있다는 것입니다 뭔가 잘못.
A
의 이름이 변경된 이유를 알고 싶습니다. 저는 이것이 유형이 정확히 맞으면 메타 범용적인 정량화가 문제가되지 않은 예를 보았다고 생각하기 때문에 타이핑 시스템과 관련이 있다고 생각합니다.
어떻게 든 A
의 이름을 바꾸지 못하게 할 수 있습니까?
물론 저는 두 사람의 질문이 실제로 옳은 대답과 관련이 없게 될 가능성이 있습니다. 왜냐하면 저는 여전히 이사벨에게 신선합니다.
추신. 이자벨로부터 좋은 상징을 얻을 수 있습니까?
_proof text_와 _proof goal_의 차이점은 아직 침몰하고 싶지 않지만 나에게 올바른 방향을 제시해 주셔서 감사합니다. 지금은'cut_tac'이 내 운동을 끝낼 수있게 해줄 것이다. 내가 구조화 된 Isar 증명을 조사하고 증명 스크립트로 모든 것을 시도하지 않아야한다는 것이 점차 분명 해지고 있습니다. 다시 한번 감사드립니다. –
분명히 거기에서 뭔가를 배울 것입니다. 끝으로'cut_tac'을 거의 사용하지 않는 선반 위에 놓는 것을 잊지 마십시오. – Makarius
* proof text *에 의해, Makarius는 쓰는 것을 의미합니다 ('apply simp','apply rule' 등). * 증명 목표 *는 출력 창에 표시됩니다. 그것은 증거의 현재 상태입니다.그들 사이의 관계는 다음과 같습니다. 초기 * 증명 목표 *는 당신이 말한 보조 정리입니다. 그런 다음, * 증명 목표 *를 사용하여 비어있을 때까지 이것을 수정하십시오. –