coq


Break “forall” hypothesis with conjunctions up into components?


I've the following hypotheses:
H : forall m n : nat,
f 0 n = S n /\ f (S m) 0 = f m 1 /\ f (S m) (S n) = f m (f (S m) n)
My goal is to break it up into it components. However, trying intros m n in H or destruct H doesn't work. How do I proceed?
I would like something like H0 : f 0 n = S n, H1 : f (S m) 0 = f m 1 and H2 : f (S m) (S n) = f m (f (S m) n) with m and n introduced.
You first need to specialize the hypothesis to be able to destruct it.
If you already know to which variables you want to apply this hypothesis (let's say you have n and m already introduced in your environment), you could do the following:
specialize (H n m).
destruct H as (H0 & H1 & H2).
or shorter:
destruct (H n m) as (H0 & H1 & H2).
(which also keeps the original hypothesis H, while the first solution clears it).
Finally, if you don't know yet to what you are going to apply this hypothesis, you can use the edestruct tactic:
edestruct H as (H0 & H1 & H2).
(* And you get:
H0 : f 0 ?n = S ?n
H1 : f (S ?m) 0 = f ?m 1
H2 : f (S ?m) (S ?n) = f ?m (f (S ?m) ?n)
*)

Related Links

Proof with false hypothesis in Isabelle/HOL Isar
Is there a convention for the order of applying ssreflect tactic/taticals?
How to systematically normalize inequalities to < (lt) and <= (le) in Coq?
Inductive subset of an inductive set in Coq
How to find the source file for an identifier in Coq
Coq “Unknown interpretation for notation” error
How to switch the current goal in Coq?
Reasoning about lists in Coq
what does the curly braces {} do in ssreflect rewrite
How to define unspecified constants in Coq
How to automatically prove simple equality of real numbers in Coq?
How to simplify real number terms in Coq?
How can I prove that (eqb x y) means x = y
What's the difference between `Reals` and `Coq.Reals.*` in Coq?
when is the `:` (colon) in necessary in ssreflect/Coq?
What's with the `of` and `&` in the Coq Inductive definition?

Categories

HOME
wso2-am
gitlab
pypi
kde
plone
webstorm
xmpp
rsync
callback
retrofit
node-notifier
virtualization
amazon-cloudformation
offline
rascal
quickbooks
correlation
google-apps-marketplace
php-7.1
windows-server-2012
circuit
dynamics-crm-online
try-catch
uitypeeditor
libtiff
finite-automata
scichart
errorlevel
wkwebview
devops
captiveportal
microsoft-r
trading
tdd
apache-commons-io
social-media
subdomains
kendo-datasource
bluestacks
titanium-mobile
avcapturesession
azure-sql-database
gammu
fusionpbx
wpf-controls
overlap
stacked
bitbucket-pipelines
qwerty
gesture
webdriver-manager
leading-zero
avro4s
dynamic-reports
botbuilder
spring-security-kerberos
checkboxlist
outlook-2013
return-value
jxcore
dtexec
sqlbulkcopy
linode
blacklist
objective-c-swift-bridge
firmata
probability-density
login-control
asp.net-4.5
google-web-starter-kit
contact-list
multiple-regression
energy
unity-networking
browser-bugs
sframe
clipperlib
c++03
dia
rdtsc
project-planning
uitouch
fluentautomation
phpthumb
transcoding
algebraic-data-types
mbr
mysqltuner
farseer
ccss
dexterity
eventual-consistency
hungarian-algorithm
selected
cisco-jtapi
viewswitcher
dotnethighcharts
code-cleanup
zpt
yetanotherforum
disclosure
substrings
thread-local-storage
defensive-programming
geneva-server
data-acquisition

Resources

Database Users
RDBMS discuss
Database Dev&Adm
javascript
java
csharp
php
android
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App