{"id":17682553,"url":"https://github.com/olbat/robinson-prover","last_synced_at":"2025-03-30T19:26:26.303Z","repository":{"id":66880325,"uuid":"1402198","full_name":"olbat/robinson-prover","owner":"olbat","description":"Prover based on Robinson system","archived":false,"fork":false,"pushed_at":"2011-10-29T08:09:12.000Z","size":803,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-05T22:18:45.677Z","etag":null,"topics":["algebra","prover","robinson"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/olbat.png","metadata":{"files":{"readme":"readme","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-02-23T13:04:43.000Z","updated_at":"2017-09-15T20:43:59.000Z","dependencies_parsed_at":"2023-02-20T13:30:38.006Z","dependency_job_id":null,"html_url":"https://github.com/olbat/robinson-prover","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olbat%2Frobinson-prover","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olbat%2Frobinson-prover/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olbat%2Frobinson-prover/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olbat%2Frobinson-prover/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/olbat","download_url":"https://codeload.github.com/olbat/robinson-prover/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246367721,"owners_count":20765924,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algebra","prover","robinson"],"created_at":"2024-10-24T09:22:33.320Z","updated_at":"2025-03-30T19:26:26.280Z","avatar_url":"https://github.com/olbat.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"/* Travail de Luc Sarzyniec et Rémi Meresse 1Agr4 utilisant java 1.5 */\n\n--Étape 1---\nusage : java adpo.test.Test \u003cformule 0\u003e \u003cformule 1\u003e ... \u003cformule n\u003e\n\nExemple d'utilisation : java adpo.test.Test \"r0()\" \"r0() OU r1()\" \"r1()\"\n\n[Dans notre exemple, { formule0, NON formule1, formule2 } entreront en \nrésolution]\n\nLes classes importantes pour le traitement de l'étape 1 sont :\n\t* adpo.formule.Formule\n\t* adpo.formule.Clause\n\t* adpo.resolution.ClauseResolution\n\nComme pour le moment la négation n'est pas implantée correctement (on ne traite\nque des clauses), pour pouvoir tout de même tester le système de résolution basé\nsur les clauses, nous inverseront tous les formules d'indice impair.\n\nPar manque de précisions dans le sujet, nous avons implantés une table d'Analyse\npour l'analyse lexicale.\n\nPour le moment il n'est pas possible de lire à partir d'un fichier.\n\nLa descente des négations est déjà implantée, il manque la remontée des clauses,\nla skolemisation, le traitement des quantifieurs et le système de formel de \nRobinson. Pour l'instant les Atomes sont des relations vides positives ou \nnégatives.\n\n\n---Étape 2---\nusage: \tjava fichierMain -e \"\u003cformule\u003e\"\n\tjava fichierMain [-f] \u003cfichier\u003e\n\nExemples d'utilisation : java adpo.test.TestResolution fichier\n\t\t\t java adpo.test.TestFormule -e \"r1() ET r2() =\u003e r1()\"\n\t\t\t java adpo.test.Tests -f fichier\n\nLes classes de tests executables sont les suivantes :\n\t* adpo.test.TestAnalyse\n\t* adpo.test.TestFormule\n\t* adpo.test.TestResolution\n\t* adpo.test.Tests (execute tous les tests)\n\nLes classes importantes pour le traitement de l'étape 2 sont :\n\t* adpo.formule.Clause\n\t* adpo.formule.FormeClausale\n\t* adpo.resolution.ClauseResolution\n\nVous pourrez remarquer que nous avons ajouté une méthode simplification() à\nl'interface adpo.formule.Formule, elle permet de simplifier une Formule en \nsimplifiant les opérations portant sur VRAI et FAUX.\n\nPour l'instant nous n'avons toujours pas implémenté le programme principal,\npour les tests, il faut passer par les classes de tests.\n\n\n---Étape 3---\nusage: \tjava fichierMain -e \"\u003cformule\u003e\"\n\tjava fichierMain [-f] \u003cfichier\u003e\n\nExemples d'utilisation : java adpo.test.TestAnalyse fichier\n\t\t\t java adpo.test.TestRobinsonResolution -e \"(r1(a) ET \n\t\t\t \tr1(x) ET r3(x,b)) OU NON r2(x) OU (NON r3(c,y) \n\t\t\t\tET r2(c))\"\n\t\t\t java adpo.test.Tests -f fichier\n\nLes classes de tests executables sont les suivantes :\n\t* adpo.test.TestAnalyse\n\t* adpo.test.TestFormule\n\t* adpo.test.TestResolution\n\t* adpo.test.TestRobinsonResolution\n\t* adpo.test.TestClauseResolution\n\t* adpo.test.Tests (execute tous les tests)\n\nLes classes importantes pour le traitement de l'étape 3 sont :\n\t* adpo.formule.EnsembleTerme\n\t* adpo.formule.Variable, adpo.formule.Constante, adpo.formule.Fonction\n\t* adpo.resolution.Substitution\n\t* adpo.resolution.Unification\n\t* adpo.resolution.RobinsonResolution\n\nAtome et Fonction héritent tous les deux de la classe abstraite EnsembleTerme\nqui permet de traiter plus aisement les ensembles de Termes (interface qui est\nimplémentée par Variable, Constante et Fonction).\n\nLa classe Substitution permet de stocker un ensemble de règles de substitutions\nainsi que de les appliquer à un Atome.\nLa classe Unification permet quand à elle d'unifier deux Atomes (si cela est\npossible) en utilisant toutes la méthode conseillée par nos enseignants.\nLes substitutions semblent être faites convenablement, y compris dans les \ngroupes de termes.\n\nLa classe RobinsonResolution est fonctionelle et permet d'appliquer la méthode\nde Robinson pour montrer qu'une formule est un théorême de la logique du premier\nordre.\nTous les choix sont fait de manières interactive, ainsi l'utilisateur\nchoisi la rêgle à appliquer, il détermine ensuite sur quelle clause(s)\nl'appliquer, enfin il a le choix de la substitution à appliquer.\n\nPour l'instant nous n'avons toujours pas implémenté le programme principal,\npour les tests, il faut passer par les classes de tests.\n\n---Étape 4---\nExemples d'utilisation : java adpo.Main fichier\n\t\t\t java adpo.Main -e \"Axp(x) =\u003e Eyp(y)\"\n\t\t\t java adpo.Main -f fichier\n\nLes classes importantes pour le traitement de l'étape 4 sont :\n\t* adpo.formule.IlExite, adpo.formule.PourTout\n\t* adpo.resolution.FormeClausale\n\t* adpo.formule.Closible\n\nLes classes IlExiste et PourTout nous ont permis d'implémenter les quantifieurs.\nCes deux classes implémentent l'interface Formule, plus précisément la classe \nabstraite Binaire pour laquelle nous utilisons maintenant la généricité. Ainsi,\nIlExiste et PourTout étendent Binaire\u003cVariable,Formule\u003e, nous en avons profité \npour transformer Unaire de la même façon.\n\nOn a implémenté la cloture universelle à l'aide de l'interface Closible.\nLa skolemisation est implémentée grâce à une méthode de l'interface Formule.\nOn a ajouté le programme principal dans la classe Main.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folbat%2Frobinson-prover","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Folbat%2Frobinson-prover","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folbat%2Frobinson-prover/lists"}