Literature Forall X introduction to logic
Hello! Is the forall x: an introduction to formal logic a good book on formal logic? I picked it up recently and would like to know this subs thoughts, thanks
r/logic • u/gregbard • May 21 '24
We encourage that all posters check the subreddit rules before posting.
If you are new to this group, or are here on a spontaneous basis with a particular question, please do read these guidelines so that the community can properly respond to or otherwise direct your posts.
This group is about the scholarly and academic study of logic. That includes philosophical and mathematical logic. But it does not include many things that may popularly be believed to be "logic." In general, logic is about the relationship between two or more claims. Those claims could be propositions, sentences, or formulas in a formal language. If you only have one claim, then you need to approach the scholars and experts in whatever art or science is responsible for that subject matter, not logicians.
"Logic is about systems of inference; it aims to be as topic-neutral as possible in describing these systems" - totaledfreedom
The subject area interests of this subreddit include:
The subject area interests of this subreddit do not include:
Recreational mathematics and puzzles may depend on the concepts of logic, but the prevailing view among the community here that they are not interested in recreational pursuits. That would include many popular memes. Try posting over at /r/mathpuzzles or /r/CasualMath .
Statistics may be a form of reasoning, but it is sufficiently separate from the purview of logic that you should make posts either to /r/askmath or /r/statistics
Logic in electrical circuits Unless you can formulate your post in terms of the formal language of logic and leave out the practical effects of arranging physical components please use /r/electronic_circuits , /r/LogicCircuits , /r/Electronics, or /r/AskElectronics
Metaphysics Every once in a while a post seeks to find the ultimate fundamental truths and logic is at the heart of their thesis or question. Logic isn't metaphysics. Please post over at /r/metaphysics if it is valid and scholarly. Post to /r/esotericism or /r/occultism , if it is not.
r/logic • u/Big_Move6308 • Jul 06 '26
The r/logic wiki now includes free online resources to learn logic (courses, books, and proof tools).
If you know of any others, please provide links so they can be added in future.
Hello! Is the forall x: an introduction to formal logic a good book on formal logic? I picked it up recently and would like to know this subs thoughts, thanks
r/logic • u/Remarkable-Range7723 • 18h ago
I previously posted here, looking for advice about learning modal logic for somebody who hasn't studied maths since middle school. I started learning elementary logic today to build basics! And there are lots of confusing parts! So I was wondering if I there's anyone I could DM when I have questions.
r/logic • u/this_theater_is_lit • 1d ago
something i see quite commonly when discussing the the limits of computing is that, for example, the halting problem indicates something about the hardness of determining whether any given machine halts. and while it is true that determining so can be quite impractically hard, bringing this up in a discussion about strictly the problem of undecidability itself is a red herring. computability is strictly concerned about the possibility of doing so, not on whether it is hard or not. conflating the two can lead to incorrect intuition about how undecidability manifests within computing, because undecidability within computing is simply not analogous to complexity or hardness.
for the following discussion we will be utilizing a partial halting recognizer:
π±p = (m: machine) -> {
true: if m halts and m not depends on π±p(m)->false
false: otherwise
}
for more info on partial recognizers consider: r/logic/comments/1wzkua3/on_an_attempt_to_limit_undecidability_within
consider a machine that is possible for π±p to recognize as halting:
// 2048 bit RSA modulus number
k = 0x95da00abc38f7a62884b1a13f985793265da5c41a0256131c10be07f2fb2c6b07c78930720c8e86eef5ad2e42abdb07c09edf5600aa5ac61d342a3146f6c472f21130582a8d5e62ddfc83abe88c0776f235998c6072fcdd00aae30ebffdae7f5d5aa97bffda0bc77cb5cb9cc73a5926a8bb8f8f9b5371e50071667fd5fb86a7e2f642e1dd982b8087445e5d7d4480cd799f8a95a244019bb2a4bc51d8392b15893acb460e999418caf1e65c158593465670c4f336a8112151e705cd275b01f8c83146ca8ddf347f99bce4bdadcdf8fa92b37f7266da472b1b8528639f6ce683312f83843031b39b0005454b540da3bdff94985541d94308f577e14d2f6f48131
hard_π±p = () -> {
// loop if the sum of the digits, of the sum of
// the prime factors, of k is odd
[p,q] = prime_factors(k)
if (sum_digits(p+q) % 2)
loop
else
halt
}
the matter of π±p(hard_π±p) is so complex to compute that it's not possible for us to decide with current theory/technology. we functionally do not know if hard_π±p halts or not, so we functionally do not know if π±p(hard_π±p) returns true or false, and we will not know until quantum computing becomes viable enough if ever. we could hook all the computing power of the entire world together on cracking that one key and still not make a dent into computing the value of π±p(hard_π±p) within a human lifetime.
such an example is not a proof of a limit to computability, cause given an unbounded computation those factors would provably be found within a finite time (as k is a real rsa key). computability doesn't care how hard the problem is, it is strictly concerned the possibility of computing a particular output, not whether it's pragmatically possible given real world computing constraints.
now consider a halting machine that is strictly not possible for π±p to recognize as halting:
und_π±p = () -> π±p(und_π±p) ? loop : halt
we can determine that und_π±p is unrecognizable to π±p thru value injection analysis:
// inject true for `π±p(und_π±p)`
() -> true ? loop : halt
// reduce static conditional:
() -> loop
injecting true clearly leads to a non-halting machine so therefore π±p must return false regardless of what the machine does. but since we aren't π±p, we can determine the truthful semantic behavior of und_π±p
// inject false for `π±p(und_π±p)`
() -> false ? loop : halt
// reduce static conditional:
() -> halt
therefore und_π±p is a halting machine that is unrecognizable to π±p, and it is not possible for π±p to avoid this.
when the semantics of a particular machine is hard to compute, this complexity bleeds into any machine composed with it in the execution path. for example: consider the higher order machine wrap which constructs a new machine composed from the input by appending a noop after executing the input machine. in base turing machines, a noop is just an excess state transition.
wrap = (m: machine) ->
() -> { m(); noop }
the extra noop does not affect whether this machines halts or not, so the complexity of computing whether wrap(m) halts or not is entirely dependent on how hard it is to compute whether m halts or not. so the complexity of computing π±p(wrap(hard_π±p)) is the same as just π±p(hard_π±p), which is impossible with today's theory/technology.
but when the semantics of a particular machine is impossible to recognize, does this impossibility then bleed into machines composed of it? one might think that if m is not possible for π±p to recognize, then surely wrap(m), which is the same machine just with an excess state transition at the end, would similarly be impossible to recognize for π±p...
this is not the case. und_π±p and wrap(und_π±p) are different machines that are therefore different input to π±p and can have different output. the unrecognizable nature of the input und_π±p is due to the paradoxical dependency on strictly the input und_π±p, not wrap(und_π±p). so while π±p(und_π±p)->false, it is still possible for π±p(wrap(und_π±p))->true. we can demonstrate how π±p comes to this recognition thru value injection analysis:
wrap(und_π±p) = () -> {
und_π±p()
noop
}
// expand und_π±p
() -> {
(() -> π±p(und_π±p) ? loop : halt)()
noop
}
// run π±p(und_π±p) to -> false, inject value:
() -> {
(() -> false ? loop : halt)()
noop
}
// reduce static conditional
() -> {
(() -> halt)()
noop
}
π±p(() -> halt)->true and π±p(noop)->true so therefore π±p(wrap(und_π±p))->true and there's no paradox stopping it from returning so. the machine wrap(und_π±p) is strictly independent of π±p(wrap(und_π±p)) so somewhat counter-intuitively: there is nothing unrecognizable to π±p about wrap(und_π±p) being a halting machine. recognizing what und_π±p does within the context of wrap(und_π±p) is not the same problem of recognizing und_π±p on it's own. computability and complexity are neither the same thing, nor even analogous in nature.
do note that wrap is not likely to be some kind of panacea that will help us produce a total halting decider. a more "clever" halting machine unrecognizable to π±p, can also make the wrapped version of itself unrecognizable:
und_wrap_π±p = () -> {
if (π±p(und_wrap_π±p)) loop
if (π±p(wrap(und_wrap_π±p))) loop
halt
}
i would like to thank u/we_think_is_cool for the discussion that inspired this post
r/logic • u/cavedave • 2d ago
A friend and I are going to read through This book by Smullyan. Taking it reasonably seriously with meetups online at least every 2 weeks.
r/logic • u/Icy-Steak-4482 • 1d ago
r/logic • u/Resident-Use-8606 • 3d ago
I want to do a PhD in logic and analytic philisophy and I want to stay in academia after as a researcher. But I am afraid of AI taking over the field. What are your opinions on this?
r/logic • u/Remarkable-Range7723 • 2d ago
I want to learn modal logic for philosophical and formal purposes. However, I don't have basic knowledge of it. I haven't studied mathematics since middle school. Thus, I feel very lost and have no idea how to get started! Any advice? Book recommendations & video recommendations would also be appreciated
r/logic • u/Glittering_Run189 • 3d ago
Hi there!
I'm finishing my bachelor in philosophy and my end-of-degree project is gonna focus on the epistemology of logic, in particular, on how can we account for a justification of the validity of our basic belief-forming methods (modus ponens, for example). I've been focusing on Boghossian's work, that gives an inferentialist answer to that question βMPP is valid for everyone that has the concept "if... then", for it is a precondition of having that concept to accept its validityβ. I'm aware that there is a similar view of semantics, proof-theoretic semantics, that is currently being studied in a more formal academic environment. Any bibliographical suggestions? Also, if you think there are other topics that could help me introduce myself in the issue, it will be great to know.
Thanks a lot :)
r/logic • u/NoAd4395 • 3d ago
In an essay, why is one's answer better/more appropriate than another's?
We might argue one does a better job of answering the question, is more relevant or even provides reason that bears greater utility, etc...
In a way, I think this is like the qualitative version of decision theory: why is one result or choice better than another? However herein lies the problem. We do not assign numerical values to answers in essays (in the way we can with probability or reward functions), so what exactly are we judging here? It's not reason, clearly, because one answer could provide excellent reasoning and still be a less accurate/appropriate answer to our question.
What i'm not looking for here is for someone to say, 'oh it's subjective'. This is the common response.
A question (a poor example albeit); If I were to say provide me with the name of something yellow. One person says a supermarket-appropriate lemon and the other says a cream sofa. We could quarrel that the lemon may in rare cases be a little green, but we can all agree that the answer is 'better/more appropriate' than the latter.
So what exactly is this reasoning, this correctness, this ability to appropriately answer a question that is 'better' than another's.
Would love to hear your thoughts on this across the board!
Thank you for reading.
r/logic • u/Alternative_Summer • 4d ago
Suppose we consider Classical Propositional Logic under some axiom set. For example, I'll pick Jan Lukasiewicz's preferred axiom set (he uses this set it in two of his books, including his introductory textbook... not in smaller papers):
{CCpqCCqrCpr, CCNppp, CpCNpq}
All lower case letters of the Latin alphabet are variables.
The definitions for other connectives go:
Apq defined as CNpq (logical disjunction defined)
Kpq : NCpNq (conjunction)
Epq : NCCpqNCqp (equivalence)
Dpq : CpNq (joint denial)
Now consider an arbitrary list of proved tautologies
[x1, x2, ... xn ]
For each element a sufficiently powerful machine could produce a conjunction or equivalence to make another list such as
[Kx1x1, ..., Kxnxn]
or
[Ex1x1, ..., Ex1x1]
Each element of either those lists can get corresponded back to the original list. Consequently, we have a one-to-one correlation between the set of proved tautologies which are not negations, and the set of tautologies which are negations. It follows by mathematical induction, that
Meta-Lemma: The cardinality of the tautologies which have the type 'negation' or 'N' is equal to the cardinality of the tautologies which have the type 'conditional' or 'C'.
Therefore:
Meta-Theorem: If the cardinality of conditional tautologies is infinite (which it must be if tautologies can have an arbitrary length), the cardinality of negation tautologies is infinite also.
That might seem to conclude the matter, but since we've assumed the natural numbers, I think there exists a catch to what we can consider as reasonable to believe. If we consider the natural numbers, there always exists a natural number greater than what we have encountered so far. For any list of natural numbers, there exists a much longer finite list of natural numbers. Thus, in terms of what it ends up reasonable to believe, we could write as some have done:
"all numbers are small."
which of course isn't strictly speaking true, but expresses the sense of what numbers must be like if we retain our notion of size in the natural numbers for most of them. Maybe better:
"Most numbers are much bigger than anyone has ever thought or ever will think."
Now I ask that you notice that negations which are tautologies also have a similar property. They are longer than tautologies used to derive them. And even more significantly so, once we start considering so-called equivalences (which again, are negations). But, at least I think, many of us have the vast majority of our encounters with positive tautologies. What textbooks even prove a single tautology which is a negation (Lukasiewicz's does), let alone prove an equivalent amount of negation tautologies to non-negation tautologies?
To get a better sense of the truth we would need to think something like:
"If we had to pick between negation tautologies and positive tautologies for what exists, we would logically pick negation tautologies." At least if the tautologies we haven't seen are more likely to be longer than what we have seen.
Negation tautologies have many uses, as automated theorem proving has shown. But are they just as useful as the equi-cardinality meta-theroem above suggests?
At the very least requiring that tautologies have a finite length specified in advance makes finding negation tautologies less likely. Though maybe instead every modern logician is a fool who didn't emphasize negations enough (this last sentence is a joke).
r/logic • u/JackTheSigmaCrvsader • 4d ago
I just started taking this university course on logic since I do philosophy, and I tried putting my reasoning on a piece of paper and something just feels wrong. Can anyone help me?
Oh I didnβt write the numbers on the left (idk how to translate them in English) but I assume they are respectively
1,2 5)
3 6)
r/logic • u/gregbard • 5d ago
The Saul Kripke Center invites submissions for Logic in Metaphysics: Classical and Non-Classical Approaches, a two-day conference on the role of logic in contemporary metaphysics. This conference will showcase work that uses, develops, or critically examines both classical and non-classical logical frameworks in addressing metaphysical questions. We welcome papers addressing the general question of what logic can or should contribute to metaphysical inquiry as well as particular cases in which metaphysical theorizing appears to support, require, or resist departures from classical logic. Topics may include, but are not limited to, realism and antirealism, indeterminacy and vagueness, impossible worlds and counterpossibles, dialetheism, future contingents, and non-classical reconstructions of classical metaphysical views (e.g., logical atomism or verificationism). Papers defending classical approaches are welcome.
r/logic • u/BaseballBright5675 • 5d ago
Can independent, basic, or regular premises receive support? I understand that they directly and independently support the next conclusion.
r/logic • u/Zaja_Justicable • 5d ago
r/logic • u/mandemting03 • 5d ago
EDIT:I think I understand. I was thinking of it as Only(If (A)). That is the Only operator is applied to the sufficient condition If(A) but formal logic is asking me to think of it as Only If(A). That is, Only If() is it's own operator. It is not an Only() operattor applied to If(A) operator.
"If A then B" means "All A is B" but other things can still be B like C,D,E,etc...
Why doesn't "Only if A then B" mean "All A is B" but now C,D,E,etc can no longer be B, hence Only All A is B. Why does this "only" operation exclude All A all of a sudden?
Feel like if we were building on top of "If A then B" by adding "Only" to "If A", that would be the most intuitive way of thinking about it because it still satisfies "All B is A" as well.
But then this would require some extra operators like "Some"
"Only If Some A then B"
r/logic • u/wumbo52252 • 6d ago
A kripke frame (W, R) is reflexive iff every instantiation of β‘p β p is valid in it. (W, R) is transitive iff every instantiation of β‘p β β‘β‘p is valid in it.
Iβve been trying to find axiom schemes for other order properties like density and upward directedness, but itβs been tough (please DONβT tell me anything about these examples! I want to figure out if itβs possible on my own, and I have a course planned out!). I guess one difference is that these other properties involve existential statements (so i imagine the dual modal operator will show up), whereas the previous examples were all universal. But at the end of the day my biggest struggle is intuitively seeing how the formulas relate to the order properties. I donβt think this is helped by the fact that to prove an axiom scheme implies an order prop, Iβve only been able to prove the contrapositive: assume the order prop fails and then cook up a satisfaction relation to make an instance of the scheme fail.
Does anyone have any advice for how to intuitively see the relationship between axiom schemes and order properties? And if off the top of your head you have any good examples/challenges please feel free to share them!
r/logic • u/Important-Cup-8991 • 6d ago
r/logic • u/badentropy9 • 6d ago
r/logic • u/NoAd4395 • 7d ago
In a recent YouTube video math mathematician hannah fry has come up with some mathematical rules and representations for how a faithful would best play the game traitors to identify the traitors.
She has devised logic with weights applied to each which are added to an individual playerβs total tally each time they make a specific move, with the resulting number indicating, if a high number = more likely to be a traitor, low number less likely to be a traitor.
The rules are as follows.
Casting a βburn voteβ +0.47
Voting for a banished traitor +0.33
Voting for a banished traitor despite never voting for them before +0.4
Does not vote for a banished traitor -1.28
If someone appears on a banished traitors voting record -1.69
Now, what I want to focus on is how people are able to formulate/come up with this logic/these rules specifically. Coming up with specific rules about a game or situation is absolutely key in our ability to play the game and out manoeuvre other players. Yet some players are better at formulating these rules than others. I want to understand why some people are better at forming these rules and spotting these patterns than others. This can be applied to so many walks of life, it is the absolute essence of problem solving.
What areas of academia are relevant for forming correct rules about a given situation, recognising behaviours, actions, and applying them to a structure, a game, or a situation.
I note becuase in social politics there are ways of winning/playing the game of power and deception, and some people play better than others by knowing rules others donβt, some people make social plays & deceptions others do not recognise, but how are these rules devised is the key question
r/logic • u/parker4044 • 9d ago
r/logic • u/Euphoric-Gap6631 • 8d ago
I'm just starting to study logic and am having trouble understanding this. For context, it's in my math textbook. After this topic, the book moves on to sets and then functions
r/logic • u/andreiluca10000 • 9d ago
Yo so this logic shit seems cool to me and I wanna learn it (preferably free).What would be the best way?Know it might seem like this post is satire but I genuinely want to learn.
r/logic • u/this_theater_is_lit • 8d ago
hi all, this is related to my work from another post: on the nature of undecidability within computing and refuting the church-turing thesis. when i started writing this post it was going in a very different more optimistic direction, but things turned for the worse as i refuted one of the more promising points in my draft...
in that draft i invent a new form of classifier machine in an attempt to get around undecidability paradoxes that are found within computing due to the inherent possibility of self-referential paradoxes. like the canonical und = () -> halts(und) ? loop : halt, these machines create necessarily paradoxical dependencies with their logical structure. in this example und is either a halting machine that depends on halts(und) -> true or und is a looping machine that depends on halts(und) -> false. which it is isn't specified because halts as envisioned in that example is underspecified and cannot be implemented as a machine. to contrast with my proposal i will also detail what conventional theory already discusses, with examples for the circle-free problem since those will be more relevant moving forward.
a total decider returns for all input, correctly maps the input, doing so with coherent dependencies on π(m) (if applicable):
π = (m: machine) -> {
true: m is circle-free and not depends on π(m)->false,
false: m is circular and not depends on π(m)->true,
}
consider undecidable machine und_π:
und_π = () -> π(und_π) ? halt : loop { output 1 }
und_π is either a circular machine when dependent onπ(und_π)->true or und_π is a circle-free machine when dependent on π(und_π)->false ... neither of which is a form of machine that π can decide. therefore π cannot be implemented as specified, as it does not handle all forms of input.
a total recognizer returns true for all circle-free input, but may diverge (and block indefinitely) on some circular input. when it does return the dependencies are coherent (if applicable):
πr = (m: machine) -> {
true: m is circle-free and not depends on π(m)->false,
false: m is circular and not depends on π(m)->true,
diverge: m is otherwise circular
// not specified to diverge for _any_ circle-free machines
}
πr is more paradox resistant than π because diverging can prevent certain incoherent dependencies from arising. consider the machine div_πr:
div_πr = () -> πr(div_πr) ? halt : loop { output 1 }
πr(div_πr) can diverge to align with it's specification but it's not possible to build this because with parallel execution u can construct a circle-free machine that depends on πr diverging, which this decider has no specification for and is therefor unimplementable. consider the machine und_πr:
und_πr = () -> {
dr = steppable(() -> πr(und_πr))
loop {
dr.step() // run πr for one step/transition
if (dr.output() == true) // if πr outputs true, halt
halt
else
output 1
}
}
total deciders and total recognizers are the two forms of classifiers acknowledged in textbook computing theory, where total deciders do not exist, and total recognizers only exist for semi-decidable sets (including halting machines, but not circle-free machines). nothing i've written so far disagrees with this. it's worth noting that "partial deciders" such as (m) -> true is just internet bs hallucination, those are not any form of semantic classifier.
a partial recognizer returns true for all circle-free input with a coherent (or no dependency) on πp(m), but will mix certain circle-free machines in with false that have an incoherent dependency on πp(m), ei are dependent on πp(m) -> false
πp = (m: machine) -> {
true: m is circle-free and not depends on πp(m)->false,
false: m is circular or
(m is circle-free and depends on πp(m)->false),
}
consider the machine und_πp:
und_πp = () -> πp(und_πp) ? halt : loop { output 1 }
πp(und_πp) cannot be true as that would cause und_πp to be circular violating it's specification. but unlike in the case of π, πp(und_πp) returning false causing und_πp to be circle-free is still aligned with it's specification for returning false on circle-free input that is dependent on it returning false. so this case is technically decidable, and won't gum up downstream logic which might depend on the value, even if it doesn't manage to recognize the circle-free machine. we will call a machine like und_πp unrecognizable to πp, not undecidable.
furthermore due to πp mixing in both circular and circle-free machines in with it's false return, πp does not recognize any machine with false. this is a start contrast to total deciders and total recognizers which recognize machines with both true and false outputs. a total decider is defined to totally recognize a set with true, and totally recognize the complement with false, which is just not logical feasible on turing machines due to the possibility of paradoxical dependencies in such a recursively enumerable set of computations. a total recognizer still totally recognizes a set with it's true return, but only recognizes a subset of the complement with it's false return, while presumably diverging any there are unrecognizable to it, and is logically feasible for semi-decidable problems like halting. while the defined partial recognizer of this post recognizes a particular subset of machines with it's true output, no machines with it's false return, but never has to diverge.
(1) despite turing wrongly conflating the two, it is not actually necessary to correctly identify all circle-free machines in order to enumerate all possible output sequences. infinite machines compute any given sequence, and only one is needed to compute any given possible output sequence. so despite only being able to enumerate a subset of all circle-free machine, one may wonder whether πp can identify a turing-complete subset of machines.
and even if it doesn't, a next question arises: what kind of output sequences are strictly computed by circle-free machines dependent on πp(m)->false vs those which can be computed by machines which either depend on πp(m)->true, or have no dependency at all on πp(m) at all. and quite pointedly: should we actually care about those that are missed?
(2) despite only being a partial recognizer in respect to all circle-free machines, πp is a non-trivial total decider in it's own right, namely for those machines which are circle-free and do not depend on πp(m)->false. this alone would refute rice's theorem, and would be quite the revelation. this aspect i have not explored much.
for any recognizer proposing to totally identify a set of circle-free machines, we can construct a diagonal across that recognizer:
π = (d) ->
() -> loop (n=0, r=0; true; n++) {
if (d(n) == false) continue // skip invalid, circular, or paradox machines
output sim(n,r) // simulate machine to r-th output and output
r++ // count circle-free machines
}
unfortunately π(πp) is not recognizable by πp due to the same infinite recursion that stumped turing in the famous Β§8 of on computable numbers, which would cause π(πp) to get stuck at sim(π(πp),r) for some r. we can however construct a diagonal across πp that is recognizable by πp, avoiding that particular infinite recursion:
πp = () ->
loop (n=0, r=0; true; n++) {
if (πp(n) == false)
continue
if (n == πp) // output digit for itself on the diagonal
output 0
else
output sim(n,r)
r++
}
this unfortunately can be diagonalized by an anti-machine. for any machine that exists, an anti-machine will also exist:
anti = (m) ->
() -> loop (r=0; true; r++) output 1-sim(m,r)
the anti-machine anti(πp) will not be recognizable by πp as this would become circular due to the same infinite recursion. unfortunately there's no way to "fix" this diagonal, as unlike πp we cannot construct a machine that will ever output it's own anti-output to machine anti(πp) and still be recognizable like πp.
but as demonstrated by anti, this machine form a computable relationship between those which is recognized by πp, which means we can enumerate it alongside those recognized by πp, and perhaps might catch the machines missed by πp alone:
π = () -> loop (n=0; true; n++) { // iterate over all possible machines
if (πp(n) == false) continue // skip invalid, circular, or paradox machines
output n // output machine
output anti(n) // output anti-machine
}
we can then construct a circle-free recognizer based on π:
πe = (m: machine) -> loop (n in π()) {
if (m < anti(n)) // since π is in-order we can return false once at
return false // machines too complex to be m
elif (m == n)
return true
}
as much as i was excited at the prospect, this does not manage to capture all the circle-free machines missed by πp. in this case πp can't even recognize a circle-free machine equivalent to the diagonal π(πe), as the machine anti(machine) enumeration befuddles an attempt to do so. the closest πp recognizable machine to π(πe) will invariable be off for any machine computing its anti-sequence:
almost_πe = () -> {
r = 0
loop (m in π()) {
if (m == almost_πe)
output 0
elif (m == anti(almost_πe)) // anti-identity check required to be circle-free
output 1 // output what will be an anti-digit for the anti-machine
else
output sim(m, r)
r++
}
}
anti(almost_πe) is also a circle-free machine, but it will not be a total anti-diagonal as it the bit it outputs for itself on the diagonal (and any machine which computes the same sequence) will be the output for the machine, not the anti-output.
despite my current failures to limit undecidability, this was a necessary failure in getting to this point of expressing πp so precisely based on the dependencies. that particular description was only a result of my discussion with u/OpsikionThemed, who i will thank again for actually engaging with genuine consideration... something that is tragically rare on the internet.
with this description can i precisely define the root cause of πp failing to recognize some machine like und_πp: an incoherent dependency, where the circle-free execution of und_πp necessarily follows from πp(und_πp)->false.
we can constructively prove the language of circle-free machines unrecognizable to πp must be turing-complete, as any circle-free machine m recognizable by πp has an associated machine und(m) that is unrecognizable to πp:
und = (m: recognizable circle-free machine) -> {
und_m = () -> {
if (πp(und_m)) halt // construct incoherent dependency
output m() // und_m outputs the same as m
}
output und_m
}
however even if the language recognizable by πp isn't totally turing-complete ... why do we actually care about those machines which depend on πp(und_πp)->false? perhaps there is an entirely valid and potentially transformative notion of effectively turing complete language that performs all the computations we're interested in. there is no practical reason to build a circle-free machine that is dependent on being unrecognizable to πp. and the language of circle-free machines unrecognizable to πp may not even contain output of academic value, like those open unanswered questions in number theory.
for example consider a machine that computes in accordance with the collatz conjecture:
collatz = (n: β) -> {
if (n == 1)
output 1
elif (n%2 == 0)
output collatz(n/2)
else
output collatz(3*n + 1)
}
collatz_conj = () -> loop (n=0; true; n++) output collatz(n)
if collatz_conj is a circle-free machine then the collatz conjecture is true. from this construction it doesn't appear that the collatz conjecture being circle free would depend on πp(und_πp)->false, so if it is true, then this machine would be recognizable by πp. if not then it ought to be recognizable by a complement circular partial recognizer πp', as collatz_conj also does not have a dependency on πp'.
what i'd like to ask this group is help or inspiration on how i might prove that πp exists. i suppose a proof that it cannot be refuted via a conventional diagonalization proof would be a great start on whether it might exist, but i suppose a non-constructive proof like such isn't great at demonstrating the certain existence of an algorithm we haven't yet built. and a constructive proof would require actually building it ... which is a research question far outside the scope of a single person, or at least that's how it seems atm