coq


Simple inversion using custom inversion


I'm working with a dependent type that models forests (lists of trees). A tree has an input element and list of output elements (t : tree a v) where v is a list.
Then a forest has a list of inputs and a list of outputs, the essential production says
forest_cons: forall a v x w, tree a v -> Forest x w -> Forest (a :: x) (v ++ w)
where v x w are lists and a is an element.
This production is 'on the left' and I need to do it on the right, so I wrote a custom induction tactic for this purpose called Forest_rev_ind. When I go to use it on a forest, I can use simple inversion, or inversion using Forest_rev_ind, but I cannot do both. Coq simply fails to recognise the command. If I do only inversion using Forest_rev_ind then the parameters of the forest are not adjusted.
I need to use simple inversion to make sure that the parameters in the type are properly adjusted, and I need to use the custom tactic for logical reasons in the proof. Any suggestions?
[If this question does not conform to the required standards here, please let me know and I can re-submit the question with improvements.]

Related Links

Induction on predicates with product type arguments
Construct Sets in Coq
Is this relationship between forall and exists provable in Coq/intuitionistic logic?
Proof automation in Coq how to factorize a proof
How to use matched case and variable equivalence in coq
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?

Categories

HOME
jdo
amazon-ec2
minimum-spanning-tree
gremlin
onedrive
sd-card
amazon-ecs
alpha
acquia
opengl-es-2.0
qore
primary-key
session-variables
python-unittest
nano-server
handsontable
vb.net-2010
moonmail
task
phaser
percona
netflix
worldwind
after-effects
apache-metamodel
pythonanywhere
crystal-reports-2008
swingx
java-3d
telerik-reporting
zurb-foundation-6
kannel
info.plist
web-api-testing
saas
gsmcomm
bluestacks
nameservers
twilio-api
siesta-swift
caret
stringtemplate
hybridauth
windows-dev-center
form-data
y86
cloud-code
mapbox-gl
wpf-controls
devextreme
bitbucket-pipelines
hockeyapp
unspecified
ssjs
preconditions
http-live-streaming
modelmapper
flashair
wptoolkit
wso2carbon
long-polling
hibernate-tools
chain-builder
multipeer-connectivity
statsd
nstextview
elgg
nativeapplication
slickedit
tactic
magma
linode
jspdf-autotable
webdriverjs
redundancy
migradoc
pintos
static-ip-address
file-writing
merge-conflict-resolution
plottable.js
persist
make-install
netmq
spim
intellij-14
createprocessasuser
dereference
e10s
npapi
qcodo
wordpress-theme-customize
device-manager
googlemock
picturefill
app42
cloud-connect
mcts
html5-notifications
pyhdf
oam
commoncrypto
runtime.exec
dotnetnuke-5
eventlistener
html-editor
libstdc++
nsnetservice
objective-c-2.0
enter
blackberry-playbook
rfc1123
remember-me
dmx512
xsdobjectgen
database-management
thread-local-storage
ajax-forms

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