東北本線の線区上の起点は東京駅であるが、1885年（明治18年）の開業以来、東北本線在来線列車の始発駅は上野駅となっていた。貨物運輸のため上野駅 - 秋葉原駅間には貨物線が敷かれていたが、この区間はもともと江戸の下町に当たり線路敷設が避けられていたこともあって、はじめて旅客列車が発着するようになるのは1925年（大正14年）に山手線が現在のような環状運転を行うために電車線を敷設・開業してからのことで、それまでは山手線も上野駅を始発・終着駅として運転されていた。上野駅は北のターミナルとして、東北・信越地方や関東北部へ向かう列車の始発・終着駅としての歴史を刻み、現在も首都圏中距離電車のほか、常磐特急「ひたち」・「ときわ」などが上野駅ホームを発着している。第二次世界大戦終結後の1946年（昭和21年）11月5日、GHQが東北本線方面に向かう占領軍専用列車を横浜駅発着で走らせて以来、東北新幹線東京駅乗り入れ工事に着手されるまでは、上野駅発着の優等列車および朝夕の中距離列車の一部が東京駅や新橋駅、さらには神奈川県、静岡県方面から東海道本線経由で直通運転されたが、東北新幹線建設の際に東京駅 - 秋葉原駅間の列車線施設が新幹線用地とされ、以来電車線（山手線・京浜東北線の線路）のみが東京駅に繋がり、中・長距離定期列車はすべて元の上野駅（あるいは池袋駅・新宿駅）を始発・終着駅とするようになった。また、新幹線に流用されなかった秋葉原駅 - 上野駅間の線路は留置線・回送線として使われるようになった。その後、東北本線中距離列車の運行区間を東京駅、品川駅方面へ延伸し、東海道本線と相互直通運転する計画が企画され、2015年（平成27年）3月14日から「上野東京ライン」として、列車線も、東北本線本来の起点である東京駅を経由して運転されている。なお、当線の戸籍上の終点は盛岡だが、JRより経営分離された盛岡以北のいわて銀河鉄道線および青い森鉄道線内キロポストは従前のまま東京起点からの通算表示となっている（盛岡駅構内にIGR線用の、目時駅構内に青い森鉄道線用の各0キロポストは設置されていない）。
Prologの実行は述語を定義された処理系に対してユーザが質問することによってなされる。質問とは、?- 親子(ふね,タラオ).のようなものである。ここでの質問は「ふねはタラオの親か」という意味だ。「ふねとタラオは親子関係である」という読み方もある。このような質問に処理系が答えることができるためにはその知識が必要である。Prologではこの知識を述語という形式で与える。そのことを述語を定義するという。定義された述語には一般に処理系によって最低限必要なものとしてユーザに対してあらかじめ用意された組込述語(ユーザは定義しなくてもよい)と、ユーザが自ら定義したユーザ定義述語の二種類がある。ユーザは自ら定義した述語群をファイルに保存して、そのファイルを組込述語であるconsult/1述語によって処理系に読み込ませる。サザエさんの家系図に関する述語群が親子(波平,サザエ).親子(ふね,サザエ).親子(波平,カツオ).親子(ふね,カツオ).親子(波平,ワカメ).親子(ふね,ワカメ).親子(マスオ,タラオ).親子(サザエ,タラオ).夫婦(波平,ふね).夫婦(マスオ,サザエ).member(X,[X|_]).member(X,[_|R]) :-    member(X,R).上記のように、エディタなどで書かれて、ファイル'sazaesan.pl'に存在するとして、?- consult('sazaesan.pl').true.を実行することによって、サザエさんの家系図に関する述語群がユーザから参照できるようになる。?-はプロンプトと呼ばれ、質問を受け付ける準備ができていることを示す。プログラムを実行するのには、一般にProlog処理系の起動後、最初のプロンプトが表示されてからユーザ自身で質問(目標)という形でプログラムを実行する。実務的なプログラムではこの質問によって述語定義の融合、頭部の単一化、本体部の導出の長い連鎖となり、最終的にその質問が真か偽の結果を残して終了する。これが普通の使い方だが、処理系の起動時にコマンド引数などで最初に実行する質問を引き渡して、起動後停止することなく、質問が実行される場合もある。ここでlistingという質問を与えてみる。この組込述語は現在実行可能な状態にある述語すべてのソースコードを表示する。?- listing.親子(波平,サザエ).親子(ふね,サザエ).親子(波平,カツオ).親子(ふね,カツオ).親子(波平,ワカメ).親子(ふね,ワカメ).親子(マスオ,タラオ).親子(サザエ,タラオ).夫婦(波平,ふね).夫婦(マスオ,サザエ).member(X,[X|_]).member(X,[_|R]) :-    member(X,R).このように定義済みであることが分かった。これが先の?- consult('sazaesan.pl').の効果である。最初の親子(波平,サザエ). から 夫婦(マスオ,サザエ). までが事実であり、形式的には本体がなく、単位節と呼ばれる。その下の member は二番目の節に再帰的に本体があり、これはルールと呼ばれる。ルールmemberを使った質問をしてみる。?- member(サザエ, [波平,サザエ,マスオ]).true.となる。サザエは集合{波平 サザエ マスオ} の要素であるかという質問に真と答えている。さらに簡単な質問をしてみる。単に事実を問うものだ。?- 親子(波平,サザエ).true.?- 親子(ふね,X).X = サザエ;X = カツオ;X = ワカメ .?-この質問で第二引数に X 乃ち論理変数が使われた。処理系はこのXに適切な値が入ることで、この質問を真となって終わらせようとする。X に カツオが入った時、?- 親子(ふね,カツオ).true.で真となるし、ワカメが入った時、?- 親子(ふね,ワカメ).true.で真となる。この二つの質問を 論理変数 X を順に束縛することで満たしているのが上の ?- 親子(ふね,X). での実行結果である。質問の詳しい説明は後のプログラム例「家系図」以下にある。